• Как правильно повесить обработчик события наведения мышки на элемент и ухода с него?

    @ZZiliST Автор вопроса
    Изучаю JS, CSS, HTML, PHP
    Решение найдено, необходимо было использовать не onmouseout, а onmouseleave
    Ответ написан
    Комментировать
  • Как сделать появляющуюся кнопку на :focus, которой изначально не было?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    input:focus + .btn{
    opacity : 1 или display:block;
    }
    .btn:focus{
    opacity : 1 или display:block;
    }
    Ответ написан
    3 комментария
  • Как реализовать закрывающий крестик в добавленом блоке?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    function addblock(el) {
      var p = document.createElement("p");
      p.innerHTML =  el.querySelectorAll("option")[el.selectedIndex].textContent + "<span onclick='delblock(this);'> x </span>";
      el.parentNode.appendChild(p);
    }
    
    function delblock(el) {
     el.parentNode.remove();
    }
    Ответ написан
    Комментировать
  • Отличие 'none' и 'hidden' в свойстве border- style?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    none
    Не отображает границу и ее толщина (border-width) задается нулевой.

    hidden
    Имеет тот же эффект, что и none за исключением применения border-style к ячейкам таблицы, у которой значение свойства border-collapse установлено как collapse. В этом случае вокруг ячейки граница не будет отображаться вообще.
    Ответ написан
    Комментировать
  • Как мне узнать, где какой почтовый шаблон используетсяв коде в Битриксе? Можно как-нибудь быстро найти участок кода на сайте по шаблону?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Может я что-то не правильно понял. Но почтовые шаблоны обычно используют компоненты и ты просто указываешь в настройках компонента какой шаблон использовать. А сам код почтового шаблона прописывается в админке, в настройках, в разделе Почтовые шаблоны.
    Ответ написан
  • Посчитать сумму в Select'ах и скрыть определенные данные в списке?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Тот случай, когда проще самому написать, чем объяснить. Но я попробую. Создаёшь массив всех Section и прогоняешь их через цикл, в котором пушишь в новый массив все option c значением selected. Затем этот массив собранный из option прогоняешь через цикл, в котором приплюсовываешь value к какой нибудь переменной. Не забудь преобразовать value в Number иначе у тебя дует получться что-то типа 150015007007300, так как value у option имеет string`овый тип данных.

    Для того чтобы скрывать данные во втором select в зависимости от первого, вешаешь событие change select и через условия проверяешь: "Если у текущего select`a выбранный option имеет innerHTML == "Нужно тебе значение", то у другого select`a в котором необходимо изменить значения делаешь .options.length = 0; А затем используешь вот такую функцию

    //Функция добавления новой опции к выбранному списку
    
    function addOption (oListbox, text, value, isDefaultSelected, isSelected)		 
    
    		{
    		  
    		  var oOption = document.createElement("option");
    		  oOption.appendChild(document.createTextNode(text));
    		  oOption.setAttribute("value", value);
    
    		  if (isDefaultSelected) oOption.defaultSelected = true;
    		  else if (isSelected) oOption.selected = true;
    
    		  oListbox.appendChild(oOption);
    		}


    Используешь её вот так:

    arrSelect[7].options.length = 0;	
        addOption(arrSelect[7], "- не выбран -", "0", true);	
        addOption(arrSelect[7], "топлок 41мм", "25", false);											
        addOption(arrSelect[7], "топлок 43мм", "25", false);
    
    // arrSelect[7] - это твой массив собраных select где ключ это нужный тебе select
    // "- не выбран -"  - это то что будет написано между тегами <option>
    // "0" - это будет value 
    // true - если надо что бы этот option в select был выбранным по умолчанию для остальных false


    вроде всё.
    Ответ написан
    Комментировать
  • Как раскрыть блок по кнопке, при этом сменив название кнопки?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    $('button').on('click', function() {
    	$('.param').toggleClass('go');
      if( $(this).text() == "Свернуть"){
       $(this).text("Показать полностью");
      }else{
     	 $(this).text("Свернуть");
      } 
    })


    .param__wrap{
      height:auto !important; 
    }
    Ответ написан
  • Как расположить контент по центру?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    пропиши

    .head {
    height: 100vh;
    display:flex;
    align-items:center;
    Ответ написан
  • Как задать разные параметры - owl carousel?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    var owlOne=$(".slider-bestseller"); // первый слайдер
    var owlTwo=$(".slider-proizvoditely"); //второй слайдер
    
    	
    			owlOne.owlCarousel({
    				margin:40,
    				items: 2,
    				autoplayTimeout:6000, 
    				nav:true,
    		});
    
    
    owlTwo.owlCarousel({
    				margin:30,
    				autoplayTimeout:7000,
    				autoplayHoverPause:true, 
    				loop:true, 
    				autoplay:true, 
    				dots:false, 
    				nav:true,
    			});
    Ответ написан
    Комментировать
  • Битрикс, вывести товары со скидкой?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Всё очень просто:

    <?$res = AllProductDiscount::getFull();?>
    
    <?
    foreach($res['IDS'] as $ID) {
        	$sale_id[] = $ID;
    }
    ?>
    
    <?
    $GLOBALS['searchFilter'] = array("ID"=>$sale_id);
    ?>


    А в коде вызова компонента ищем строку "FILTER_NAME" => "searchFilter",

    "searchFilter" это ключ элемента из массива $GLOBALS
    Ответ написан
    Комментировать
  • Как узнать ИД свойства в умном фильтре Битрикса?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Хм, ну если вы просто чисто визуально хотите увидеть ID каждого свойства. То их можно посмотреть перейдя в настройки инфоблока, на вкладку свойства( там где вы добавляли эти свойства вручную, ну или если они с 1С загрузились), а затем нажать на кнопку с троеточием рядом с названием свойства, тем самым переходя в его настройку. Там вы увидите ID нужного вам свойства.
    Ответ написан
    Комментировать
  • Как отсортировать массив по повторениям?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    <?php
    $array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');
    
    sort($array1);
    echo "Обычная сортировка\n";
    print_r($array1);
    
    natcasesort($array2);
    echo "\nNatural order сортировка (без учета регистра)\n";
    print_r($array2);
    ?>


    Результат:

    Обычная сортировка
    Array
    (
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
    )

    Natural order сортировка (без учета регистра)
    Array
    (
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
    )

    затем когда массив будет отсортирован прогнать его через цикл, разбивая каждый элемент на символы и сравнивая с предыдущим элементом, на совпадение символов. Если элементы совпадают, пушить в новый массив, если элементы не совпадают, создавать ещё один новый массив и пушить уже в него. Ну я бы так сделал, может есть более простой способ.
    Ответ написан
    Комментировать
  • Как вывести разделы каталога в верхнее меню битрикс?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Ну смотри я вот так реализовываю всегда.

    1) Создаю два типа меню. Например: "Верхнее меню" и "Каталог" ( что бы создать новые типы меню, это надо пройти в настройки и там в настроках структуры дописать новые типы меню.
    2) Беру обычный компонент типа bitrix:menu вот его template.php

    <? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
    <?$countMenu = 0;?>
    <? if(!empty($arResult)): ?>
        <div class="top_menu">
    		<ul class="menu" data-role="x-menu">
    			<?
    				$previousLevel = 0;
    				foreach($arResult as $arItem):
    			?>
    				<? if($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
    					<?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
    				<? endif; ?>
    				<? if($arItem["IS_PARENT"]): ?>
    					<? if($arItem["DEPTH_LEVEL"] == 1): ?>
    						<li class="first_lvl_parent parent_li<? if($arItem["SELECTED"]): ?> first_lvl_selected<? endif; ?>" <?if($countMenu == 0):?>onmouseout="OutoverElement();"
       onmouseover="HoverElement();"<?endif?>><span class="parent_span"><a href="<?=$arItem["LINK"]?>" class="<? if($arItem["SELECTED"]): ?>root-item-selected<? else: ?>root-item<? endif; ?>"<?if($countMenu == 0):?>style="padding-left:0;"<?endif?> ><?if($countMenu == 0):?>
    									
    									<?$countMenu = 1;?>
    								<?endif;?><div class="catmenu"><?=$arItem["TEXT"]?></div></a></span>
    							<ul class="first_lvl" style="height:470px">
    					<? else: ?>
    						<li class="parent_li<? if($arItem["SELECTED"]): ?> item-selected<? endif; ?>">
    							<span class="parent_span">
    								<a href="<?=$arItem["LINK"]?>" class="parent">
    									<?=$arItem["TEXT"]?>
    								</a>
    								<i class="l_top"></i><i class="l_bt"></i>
    							</span>
    							<ul class="parent_lvl" >
    								<li class="zap_top"></li>
    								<li class="zap_bt"></li>
    					<? endif; ?>
    				<? else: ?>
    					<? if($arItem["PERMISSION"] > "D"): ?>
    						<? if($arItem["DEPTH_LEVEL"] == 1): ?>
    							<li class="not_parent<? if($arItem["SELECTED"]): ?> first_lvl_selected<? endif; ?>"><span><a href="<?=$arItem["LINK"]?>" class="<? if($arItem["SELECTED"]): ?>root-item-selected<? else: ?>root-item<? endif; ?>"><?=$arItem["TEXT"]?></a></span></li>
    						<? else: ?>
    							<li<? if($arItem["SELECTED"]): ?> class="item-selected"<? endif; ?>><span><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></span></li>
    						<? endif; ?>
    					<? endif; ?>
    				<? endif; ?>
    				<? $previousLevel = $arItem["DEPTH_LEVEL"]; ?>
    			<? endforeach; ?>
    			<? if($previousLevel > 1): ?>
    				<?=str_repeat("</ul></li>", ($previousLevel-1) );?>
    			<? endif; ?>
    		</ul>
    	</div>
    <? endif; ?>


    3) Ставлю в настройках компонента "Тип меню для первого уровня: Верхнее меню" - где у меня всего один пункт "Каталог товаров" со ссылкой на основную страницу каталога.
    4) Ставлю в настройках компонента "Тип меню для остальных уровней: Каталог" (уровень вложенности по желанию.
    5) Далее перехожу в корневую папку каталога. У меня это адрес_сайта/catalog/ и добавляю в ней новое меню типа "Каталог". Сохраняем его.
    6) Открываю это меню для редактирования в режиме php и вставляю вместо всего что там есть, следующий код:

    <? 
      if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
      global $APPLICATION; 
      $aMenuLinksExt = $APPLICATION->IncludeComponent(
    	"bitrix:menu.sections", 
    	"", 
    	array(
    		"IS_SEF" => "Y",
    		"SEF_BASE_URL" => "/katalog/",
    		"SECTION_PAGE_URL" => "#SECTION_CODE_PATH#/",
    		"DETAIL_PAGE_URL" => "#SECTION_CODE_PATH#/#ELEMENT_CODE#.html",
    		"IBLOCK_TYPE" => "catalog", 
    		"IBLOCK_ID" => "18",
    		"DEPTH_LEVEL" => "2",
    		"CACHE_TYPE" => "A",
    		"CACHE_TIME" => "36000000"
    	),
    	false
    ); 
      $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); 
    ?>


    Должно работать.

    Важно! В 6 пункте, обязательно укажите правильные
    "IBLOCK_TYPE" => "catalog",
    "IBLOCK_ID" => "18",

    они у вас имеют свои значения, какие именно? Смотрите у себя в админке.
    Ответ написан
    9 комментариев
  • Почему сразу не активируется слайдер?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Допишите первому кружочку класс .active чтобы он был у первого элемента при активации слайдера. Вы же когда всёрстку делаете, не ставите ему этот класс, а при нажатии на стрелочку, он добавляется вашему кружочку.
    Ответ написан
    Комментировать
  • Как скрыть кнопку play при нажатии?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    var btnPlay = document.querySelector('#id вашей кнопки или .класс вашей кнопки');
    btnPlay.style.display = "none"; // или 
    btnPlay.style.opacity = "0";
    Ответ написан
    Комментировать
  • Как мне выравнивать блоки по вертикали?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Можно попробовать так:
    .block{
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      max-height: 300px;
      padding: 0;
    }
    
    .block a{
    	width: 33%;
      height: 100px;
      background: red;
      background-clip: content-box;
      padding: 10px;
      list-style: none;
    
    }
    Ответ написан
    Комментировать
  • Как в тэг встроить функцию submit?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    а что вам мешает создать форму, внутри формы расположить вашу вёрстку и сделать input с submit невидимым. А на див который является у вас кнопкой при помощи JS, повесить событие, которое бы кликало программно на невидимый submit
    Ответ написан
  • Как перемещать блоки float?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    .red{
    position:relative;  // тогда объект будет двигаться относительно текущей позиции. Если поставить absolute, а у родительского блока стоит relative, тогда объект будет двигаться относительно родительского блока. Если же у родителя postion не задан, то при position:absolute объект будет двигаться относительно экрана и при значения top:0; left:0 займет верхний левый угол
    top:20px или 20%;
    right:20px или 20%;
    }
    position:relative;
    Ответ написан
    Комментировать
  • Как проверить, что картинка существует?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Примерно по вот такому принципу. Если я вас правильно понял. Или сформулируйте вопрос более подробно.

    var element=document.getElementById('logo');
     if(!element){alert('меня нет на странице');} else {alert('я присутствую');}


    p.s. Я на javascript давно не писал. Но вроде бы если переменная используется только в области видимости { } то рекомендуется использовать let а не var
    Ответ написан