Получить текстовый элемент
Я новичок. Я пытаюсь вскрыть окно предупреждения с текстовым содержимым <div>
, но я получаю null
.
Javascript:
alert(document.getElementById("ticker").value);
HTML
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<script src="Tick.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="ticker">
Sample
</div>
</asp:Content >
Что я делаю неправильно?
Ответы
Ответ 1
Try:
alert(document.getElementById("ticker").innerHTML);
Имейте в виду, что текст внутри node считается дочерним элементом этого node, innerHTML будет возвращать весь HTML внутри этого элемента.
Здесь объясняется:
http://www.quirksmode.org/dom/intro.html
Если текст является единственным дочерним innerHTML будет работать нормально
Следующий код эквивалентен использованию innerHTML для вашего образца:
alert(document.getElementById("ticker").firstChild.nodeValue);
он извлекает значение node первого дочернего элемента вашего div
Ответ 2
innerHTML предоставит вам весь контент, находящийся внутри элемента, включая HTML-элементы, все остальные узлы и текст в них.
Если вы хотите получить только текст, который находится непосредственно в элементе, используйте nodeValue или text Content:
вот так: текст
var a = document.getElementById("id").childNodes[0].nodeValue;
var b = document.getElementById("id").childNodes[0].textContent;
Это получит текст - "abc" и поместит его в переменные a и b, оба они будут иметь "abc".
Однако будьте осторожны с textContent, поскольку textContent не поддерживается в Internet Explorer 8, nodeValue, с другой стороны, находится в DOM1, что означает, что его поддерживают очень старые браузеры.
А также, если вы новичок, может быть, вы не знаете, но если вы выполняете код javascript сразу после открытой веб-страницы браузера, вам нужно связать файлы javascript в нижней части вашего html-кода прямо перед тегом закрытия тела, это потому что если вы попытаетесь получить/установить текст, например, для одного элемента, и если этот элемент еще не загружен браузером, вы получите ошибку javascript, и ваш код не будет работать. Это произойдет, если вы свяжете свои файлы javascript или поместите код javascript в начало страницы.
Браузеры читают страницу сверху вниз, и, читая ее, они выполняют все и помещают в память компьютера - ОЗУ, это называется синтаксический анализ. Поэтому, если вы поместите код javascript перед загрузкой содержимого страницы и если код javascript пытается прочитать или установить какой-либо элемент, который еще не читается браузером, вы получите сообщение об ошибке.
Ответ 3
Используйте innerHTML
.
alert(document.getElementById('ticker').innerHTML);
Или даже лучше, используйте jQuery text()
:
alert($('#ticker').text());
Ответ 4
alert(document.getElementById("ticker").innerHTML);
Ответ 5
Он не будет доступен, пока документ не будет загружен. Измените код JS на:
window.onload = function() {
alert(document.getElementById("ticker").innerHTML);
}