以下代码为什么不弹出alert框?
我是想用一个alert来弹出<p>中的文本。
<html>
<head><script type="text/javascript">
var e = document.getElementById("pp");
var str=e.firstChild.nodeValue
alert(str);

</script></head><body><p id="pp"  title="pTitle" >ABCDEFG</p></body></html>

解决方案 »

  1.   


    <html>
    <head><script type="text/javascript">
    window.onload=function()
    {
    var e = document.getElementById("pp");
    var str=e.firstChild.nodeValue
    alert(str);
    }
    </script></head><body><p id="pp" title="pTitle" >ABCDEFG</p></body></html>你这样写试试。js要触发才能alert的!
      

  2.   

    原因是网页加载是按顺序执行的,当执行到alert的时候,网页未加载完,所以才不会显示,并且,如果你用IE来浏览这个网页,点击浏览器状态栏还会有出错信息。1楼的方法是加了onload方法,也就是当网页加载完后才执行这个方法。
      

  3.   

    这个你已经获取了p标记这个对象了.再用firstChild 获取子节点哪还有呢..更别谈nodeValue了..这代码我没试过 不过什么都不弹还是能理解的..
      

  4.   

    这样果然可以 可是这是为什么呢?
    我是在练习《Javascript DOM 编程艺术》上的实例时遇到这样的问题难道是书上错了?
    书上的代码没有通过onload函数来触发
      

  5.   

    js要触发才能alert的!=========== 不是的,应该说节点id="pp"还没生成前运行js造成出错!
    如果你把p标签写在js的前面,那么你的代码就运行正常了。<p id="pp" title="pTitle" >ABCDEFG</p>
    <script type="text/javascript">
    var e = document.getElementById("pp");
    var str=e.firstChild.nodeValue
    alert(str);
    </script>
      

  6.   

    习惯性把顺序问题忽略了..现在写js都是写在body的最下面..刚看了1楼的回答 试了下代码 竟然可以弹出abcdefg 看来firstchild在下面没有子节点的时候自动获取的文本节点.1楼正解.