Браузер не обрабатывает событие

322
04 апреля 2017, 12:12

Здравствуйте. Столкнулся со следующей проблемой. У меня есть код на JavaScript,

    var xhttp = new XMLHttpRequest();
        xhttp.open('GET', 'books.json', true);
        xhttp.send(null);
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            var res = eval('(' + xhttp.responseText + ')');
            var r = function (index, tag) { return res.books[index][tag] }
            author.innerHTML += r(3, 'author');
        }

который должен выполяняться при нажатии кнопки на веб-странице. Однако, когда я нажимаю кнопку, ничего не выполняется. Тогда я лезу в отладчик и начинаю построчно прогонять этот код. И к концу прогона результат уже есть на экране. Какова причина того, что результат отладчика разнится с результатом? И как это исправить? Если что, данная проблема встречается на браузерах Mozila, Maxthon, IE.

Answer 1

Причина - то, что на момент выполнения скрипта DOM-элемент author еще не построен, а отладчик дает задержку и он успевает за это время построиться, нужно использовать window.load или просто разместить скрипт после элемента.

Еще одна проблема - стоит использовать getElementById, потому что не все браузеры получают элементы по id'ам автоматически.

READ ALSO
JavaScript в Symfony. Взаимодействие back-end с JS

JavaScript в Symfony. Взаимодействие back-end с JS

Всем приветВпервые сталкиваюсь с работой JS в симфони

234
Как добавить инстаграм в список значков? [требует правки]

Как добавить инстаграм в список значков? [требует правки]

Как добавить инстаграм (instagram) в список значков?

221
Работа скрипта через интервал?

Работа скрипта через интервал?

Есть кнопка, которая по клику обновляет содержимое блока с id="dle-content"Как сделать, чтобы этот скрипт срабатывал каждые 5 минут, а не по клику?

214
Непонятное поведение pNotify в вычислении

Непонятное поведение pNotify в вычислении

После потери фокуса, если поле заполнено но невалидно почему то выводятся сразу два одинаковых сообщения: Ссылка не введена

209