• Как вызвать одну функцию из ассоциативного массива?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Можно:
    <?php
    $commands = [
    	'hi' => fn($name) => 'hi, ' . $name, 
    	'hello' => fn($name) => 'hello , ' . $name,
    	'etc' =>fn($name) => 'etc...',
    ];
    
    echo $commands['hi']('John');


    php code online
    Ответ написан
    Комментировать
  • Как добавить класс по клику на кнопку внутри карточки товара?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    const container = document.querySelector('.box');
    
    container.addEventListener("click", ({ target: t }) => {
       if(t.classList.contains("btn")) {
           const card = t.closest(".item");
           card && card.classList.add("active");
       }
    })


    А так касательно кода из вопроса, то тут всё достаточно просто. Чтобы решить задачу, вам нужно добавлять обработчик клика кнопке которая является дочерним элементом карточки, плюс можно заменить цикл for на forEach, что сделает код более читабельным.

    document.querySelectorAll('.item').forEach(v => {
       v.querySelector(".btn").addEventListener('click', () => {
          v.classList.add('active');
       });
    });


    Однако в целом такой подход не очень. То есть я хочу сказать что добавление обработчиков в цикле, имеет свои подводные камни, про которые можно найти достаточно информации.
    Ответ написан
    1 комментарий
  • Регистрация события срабатывающего при восстановлении пароля в Битрикс?

    Событие OnBeforeUserChangePassword поддерживается и вызывается в методе \CAllUser::ChangePassword(). Эта функция вызывается когда пользователь уже ввёл контрольную строку и новый пароль, т.е. непосредственно перед сменой. Ещё есть событие OnBeforeUserSendPassword - оно вызывается в методе \CAllUser::SendPassword() перед отправкой сообщения с контрольной строкой.
    Ответ написан
    Комментировать
  • Как удалить невидимые пробелы из строки в php?

    Sanovskiy
    @Sanovskiy
    Веб-разработчик с 2005 года
    ak_wi,
    Многие программы добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature).
    /**
     * Удалить BOM из строки
     * @param string $str - исходная строка
     * @return string $str - строка без BOM
     */
    function removeBOM($str="") {
        if(substr($str, 0, 3) == pack('CCC', 0xef, 0xbb, 0xbf)) {
            $str = substr($str, 3);
        }
        return $str;
    }
    
    // Строка, например, полученная при помощи file_get_contents()
    $str = 'Строка с BOM';
     
    // Строка без BOM
    $str = removeBOM($str);
     
    echo $str;


    Решений множество
    Ответ написан
    Комментировать