• Uncaught TypeError: Cannot read properties of undefined (reading 'img'), как исправить?

    max_shane
    @max_shane
    Javascript / Node.js dev
    У тебя product == 'undefined'. Дебаж, что и как в product попадает или не попадает. Поэтому и не получается прочитать img, потому что у 'undefined' нет никаких проперти.
    Ответ написан
    Комментировать
  • Как автоматически проигрывать музыку на сайте (несколько разный mp3-файлов)?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Шаг 1. Создать массив с адресами файлов.
    Шаг 2. Написать функцию возвращающую рандомное число от 0 до массивТреков.length-1
    Шаг 3. Написать функцию вызывающую API браузера для воспроизведения аудио файлов с файлом из массива и подставлять в нее динамически сгенерированное число из рандомайзера.
    Шаг 4. Написать функцию определяющую окончание воспроизведения файла (используя все тот же браузерный API) и порождающую некое событие, означающее конец трека.
    Шаг 5. Повесить eventListener на страницу и засунуть внутрь него функцию которая будет вызываться всякий раз когда будет происходить событие из функции в предыдущем пункте. Эта функция будет вызывать функцию проигрывания файла каждый раз когда будет срабатывать событие.
    Шаг 6. Вызывать функцию воспроизведения файла при событии window.onload (когда страница сайта загрузилась).
    Ответ написан
    Комментировать
  • Ошибка цикла JS но код выполняет действие, в чем ошибка?

    max_shane
    @max_shane
    Javascript / Node.js dev
    У вас number = i+1 при условии цикла i < myThings.length
    Получается на последней итерации myThings[number] будет равен myThings[ myThings.length]
    myThings[ myThings.length] по идее должен выдать undefined, тк, в вашем случае, элемент с таким индексом в массиве не должен существовать.
    Но может я и не ту ошибку нашел, я не очень понял, что вы хотите этим кодом сделать.
    Я даже не понял, для чего это:
    let number=i+1
    Так, бегло просмотрел.
    Ответ написан
    Комментировать
  • Почему при нажатии кнопки переносится на другую страницу?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Может быть потому, что по-умолчанию при обращении к URL в action вызывается метод GET?
    И на сервере при этом нет обработчика при запросе GET /action_page.php.

    Если у вас на сервере есть маршрут POST /action_page.php, то и метод отправки запроса должен быть POST.
    В любом случае в элементе form рекомендую явно указывать метод:

    <form action="action_page.php" method="post">
    или
    <form action="action_page.php" method="get">
    Ответ написан
    Комментировать
  • Есть ли решение проблемы с редактированием div при динамическом задании contentEditable в google chrome?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Попробуй ознакомиться со Svelte. Он генерирует качественный низкоуровневый javascript код.
    Будет полезным 100%.
    https://ru.svelte.dev/tutorial/basics
    Ответ написан
    Комментировать
  • Как сделать цикл перебор chckbox js?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Для решения твоей задачи тебе нужно:
    1) Получить все чекбоксы: document.getElementsByTagName('checkbox') - возвращает массив всех html элементов checkbox на всей странице;
    2) пройтись циклом или reduce по полученному массиву и собрать в один новый массив все элементы удовлетворяющие следующим условиям:
    - у которых одинаковый name
    - у которых "стоит галочка"
    3) проверить значение length полученного массива и если в нем кол-во элементов > 1, то не выводить комментарий, а если < 1 то выводить.

    P.S. (И не нужно использовать/учить JQuery).
    Ответ написан
    1 комментарий
  • Можно ли перехватить событие занесения сайта в избранное средствами js?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Да можно. Для этого нужно найти соответствующую уязвимость в браузере =)
    А если серьезно, то на ум приходят только следующие способы:
    - Например можете добавить кнопку на свой сайт "Добавить в закладки" и отслеживать нажатие, и использовать эти данные. Какие-то данные лучше чем никакие. Если найдете статью про корреляцию между добавлением в закладки через кнопку сайта и через кнопку в браузере, то сможете высчитать гипотетическое значение сколько % посетителей добавили страницу через кнопку в браузере.
    - Можно использовать метод соц. инженерии: сделать мини квиз с вопросами:
    1) Была ли полезна наша статья/страница?
    2) Добавили ее в закладки/избранное?
    И опять же, найти статью где проводится исследование, какой процент пользователей отвечает на опросы/квизы и скорректировать полученое из опросов значение по 100% охвату посетителей.
    Ответ написан
    Комментировать
  • Как в .attr('type', 'date'); сделать список возможных дат?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Нужно использовать
    <select id="select">
    <option></option>
    ....
    </select>

    То-есть использовать не input а select.
    Ответ написан
    Комментировать
  • Как скопировать определенные страницы сайта?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Почитайте про веб-скрапинг с помощью Node.js + Puppeteer
    Ответ написан
    Комментировать
  • Внешний скрипт, добавляющий модальное окно на сайт?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Могу порекомендовать начать изучать Svelte. Хотя бы почитать про него, что он из себя представляет.
    Я сам сейчас изучаю. Это такая крутая штука, которая может генерировать высокопроизводительный чистый javascript код без зависимостей от библиотеки. Это альтернатива SSR и таким подходам как использование Vue.js, React, Angular на стороне клиента.
    https://ru.svelte.dev/
    Ответ написан
    Комментировать
  • Чем можно заменить localStorage?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Храни значение денег в виде зашифрованного ключа/хэша.
    Для этого на сервере нужна функция которая будет шифровать значение и оправлять его клиенту и дешифровать при получении. Только к аргументам функции хэширования нужно примешать еще какое-то значение (помимо кол-ва денег), например какой-нибудь токен который выписывается и сохраняется в базу каждый раз когда значение денег изменяется, при этом удаляя старый. Или например время изменения значения валюты на сервере.
    Ответ написан
    Комментировать
  • Prompt условие для пустого значения и для отмены?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Если нужно, то могу порекомендовать начать изучать Javascript. С помощью него можно выполнить эту задачу.
    Что еще тут сказать то.
    Могу также порекомендовать сайт kwork.ru, там можно за дешево найти исполнителя заданий.
    Этот сайт не для того чтобы для вас выполняли задания, а для ответов на вопросы.
    Ответ написан
    8 комментариев
  • Как выбранное значение option selected подставить в value через onchange?

    max_shane
    @max_shane
    Javascript / Node.js dev
    <select id="select" onchange="func(this)">
    <script>
    function func(element) {
                let arr = element.getElementsByTagName('option')
                for (let i = 0; i < arr.length; i++) {
                    if (arr[i].selected == true) arr[i].value = arr[i].textContent
                }
            }
    </script>


    Вот этот код делает то, что ты дословно просишь.
    Если нужно обратно числа возвращать в value или не обрабатывать [0] элемент arr ('Выберите фрукт') - думаю ты сам разберешься как это сделать.
    Ты спросил, как сделать чтобы textContext попадал в value - я написал как это сделать =)
    Ответ написан
  • Как сделать, чтобы тень применялась по контору?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Наверное надо сделать svg фигуру и к ней применить наложение изображения. А потом к фигуре уже сделать тень.
    Ответ написан
    Комментировать
  • Как нажать на кнопку в точно указанное время?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Во-первых, точность вам никто не гарантирует.
    Сами методы setTimeout и setInterval не означают, что "должен сработать ровно через столько-то времени".
    Они означают "пусть сработает не раньше такого-то времени". А как сработает, зависит от множества факторов.

    Чтобы реализовать вашу задачу усилиями только скрипта, можете за 1 минуту до нужного вам времени запустить скрипт, который попытается вызвать setInterval с таймаутом 86400000 мс ровно в тот момент когда
    new Date().getHours() === yourHours && ... дальше тоже самое вместо hours повторить с минутами, секундами, миллисекундами.
    Здесь yourHours - переменная в которой указываете в который час должно произойти событие. И с минутами, секундами аналогично.
    И далее ваш setInterval будет вызывать коллбэк с периодичностью 24 часа - можете сами выбрать периодичность. Я для примера привел чтобы работало раз в сутки.
    Ну или можете каждый день запускать скрипт заранее.
    А вообще такое лучше делать на сервере с помощью cron.
    Ответ написан
    1 комментарий
  • Как отправить данные из того div, в котором нажата кнопка?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Странно, что ты сам не догадался, вроде ты знаешь все то, что нужно чтобы это сделать.
    Ты должен повесить обработчик события 'onclick' (addEventListener('click', function)) на тот блок где лежат эти дивы.
    Далее ты проверяешь в функции обработчике, если (event.target.tagName == 'DIV') то
    event.target.getElementsByTagName('input')[0].value - это и будет значение которое ты хочешь получить.
    Чтобы отсечь остальные дивы по котором может сработать клик, добавь тогда нужным дивам отдельный класс или атрибут data-* и проверяй обработчик не по дивам а по элементам с этим атрибутом или с этим классом, только не забывай, что когда ищешь элементы по классу или атрибуту, этот метод будет возвращать массив.
    И да, в обработчик не забудь поставить stopPropagation(), чтобы событие не срабатывало дальше на родительских элементах.
    Ответ написан
    2 комментария
  • Как делать http запросы через html формы?

    max_shane
    @max_shane
    Javascript / Node.js dev
    В том как сделать XMLHttpRequest вы разберетесь за 15 минут максимум. Если освоили Java...
    Там зато уже можно и blob-объекты и json отправлять.
    Ответ написан
    Комментировать
  • Почему на главной в моб версии меню работает нормально, а перейду я на страницу контактов, то уже не нормально работает?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Тут вообще верстка сбита. Нужно пересмотреть код верстки всего выезжающего меню и таба заново.
    Ответ написан
    Комментировать
  • Как временно подсветить якорную ссылку?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Вот простое решение этой задачи:

    Код должен в итоге оказаться на каждой странице где предполагается чтобы ссылки подсвечивались при переходе:

    window.onload = function () {
    	let url = window.location.href.split('#');
    	let link_id = url[url.length-1];
    	if(document.getElementById(link_id)) {
    		document.getElementById(link_id).classList.add('active-link');
    		setTimeout( () => document.getElementById(link_id).classList.remove('active-link'), 10000)
    	}
    
    }


    .active-link {
    color: red; 
    /*
    тут любые стили активной ссылки и транзишны которые ты хочешь
    */
    }
    Ответ написан
    Комментировать
  • Как удалить файл из числа прикрепленных?

    max_shane
    @max_shane
    Javascript / Node.js dev
    Ваша задача решается на чистом Javascript, путем создания своего Blob объекта (копируете в него данные из files (объект FilesList), затем отправляете на сервер посредством XMLHttpRequest.
    Только надо знать основы JS и придется разобраться в работе XMLHttpRequest.
    Ответ написан