Подскажите, почему при попытке считать textContent
из span
, выдает ошибку:
Cannot read property 'textContent' of null
Хотя на stackoverflow и других онлайн редакторах ошибки нет.
Нужно считать то что внутри тега <span>
, как это можно сделать?
Вот пример:
var a = document.getElementById('s').textContent;
console.log(a);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="style.css">
<script src="main.js"></script>
</head>
<body>
<span id="s">5</span>
</body>
</html>
Браузер начинает выполнять такой скрипт, как только его загрузит.
На момент выполнения скрипта элемент на странице еще не существует.
Вариантов решения несколько:
—
Поместите скрипт после создания тега <span>
:
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<span id="s">5</span>
<script src="main.js"></script>
</body>
</html>
—-
Дождитесь загрузки страницы:
document.addEventListener("DOMContentLoaded", function() {
var a = document.getElementById('s').textContent;
console.log(a);
});
—-
Использовать <script async>
или <script defer>
, однако такие скрипты выполняются сразу после загрузки и я так понимаю что в общем случае не факт что страница к этому моменту прогрузится полностью, однако я не встречал такого поведения...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся со следующей проблемойЕсть файл базы данных SQLite, необходимо его скопировать на SD карту смартфона Android
Мне необходимо приложение WinForm, которое будет клиентом для ViberЯ создал WebHook, который принимает POST запросы от сервера Viber