我是初学者。我正在尝试弹出一个警告框,其中包含<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 >
我做错了什么?
答案 0 :(得分:25)
尝试:
alert(document.getElementById("ticker").innerHTML);
请记住,节点内的文本被视为该节点的子节点,innerHTML将返回该元素中的所有HTML。
这里解释: http://www.quirksmode.org/dom/intro.html
如果文本是唯一的孩子,innerHTML将正常工作
以下代码相当于为您的示例使用innerHTML:
alert(document.getElementById("ticker").firstChild.nodeValue);
它检索div的第一个子节点的节点值
答案 1 :(得分:5)
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,因为Internet Explorer 8不支持textContent,另一方面nodeValue在DOM1中,这意味着非常古老的浏览器支持它。 如果你是初学者也许你不知道,但如果你在浏览器打开网页后立即执行javascript代码,那么你必须在你的html代码底部链接javascript文件,直到正文结束标记,这是因为如果您尝试为一个元素获取/设置文本,并且如果该元素尚未被浏览器加载,您将收到javascript错误,并且您的代码将无法运行。如果您链接您的javascript文件或将您的javascript代码放在页面的头部,就会发生这种情况。 浏览器从上到下读取页面,当它们读取它们时,它们执行所有内容并放置在计算机内存中 - RAM,这称为解析。因此,如果您在加载页面内容之前放置了javascript代码,并且如果javascript代码尝试读取或设置某些尚未被浏览器读取的元素,则会出现错误。
答案 2 :(得分:4)
使用innerHTML
。
alert(document.getElementById('ticker').innerHTML);
甚至更好,使用jQuery的text()
:
alert($('#ticker').text());
答案 3 :(得分:0)
alert(document.getElementById("ticker").innerHTML);
答案 4 :(得分:0)
在加载文档之前,它将无法使用。将JS代码更改为:
window.onload = function() {
alert(document.getElementById("ticker").innerHTML);
}
答案 5 :(得分:0)
textContent的问题是,它也为你提供了其他HTML元素中的嵌套文本。
所以我最终将整个内容作为字符串获取,然后使用子字符串得到我需要的内容:
var contentString = "<h3>Jimmy John</h3> some text content that I need to get <span>...",
startIndex = contentString.indexOf('</h3>') + 5; //indexOf gives index of '<', so incrementing
endIndex = contentString.indexOf('<span>'),
length = endIndex = startIndex;
var myText = contentString.substr(startIndex, length); //Voila