获取文本元素

时间:2011-03-26 18:12:37

标签: javascript

我是初学者。我正在尝试弹出一个警告框,其中包含<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 >

我做错了什么?

6 个答案:

答案 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