0
<html>
   <head>
      <script type="text/javascript" src="jQuery.js">
      <script type="text/javascript">
          x=document.getElementByTagName("p");
          document.write(x.lastChild.nodeValue);
      </script>
   </head>
   <body>
      <p id="intro">Hello World 1!</p>
      <p id="intro">Hello World 2!</p>
      <p id="intro">Hello World 3!</p>
   </body>
</html>

为什么上面的代码不起作用。我想显示 [Hello World 3!] 通过使用语句 documetn.write(x.lastChild.nodeValue()); 提前致谢...

4

1 回答 1

2

您的代码中有几个错误:

  • 在 HTML 完成加载之前执行 JavaScript。结果,<p>在您要查询它们时不存在。

简单的解决方案是将您的<script>标签移动到 HTML 页面的底部。

  • 该命令是document.getElementsByTagName()(而不是document.getElementById()- 注意添加的“s”)并返回一个数组。

所以这里正确的语法是这样的:

x = document.getElementsByTagName("p");
x = x[ x.length - 1 ];
  • 为什么要使用document.write()?这会在脚本标签的位置插入文本。

因此,对于调试,最好使用console.log()or alert()。例如,在生产环境中,您会得到一个结果<div>

所以最后你的代码可能看起来像这样才能工作:

<html>
   <head>
      <script type="text/javascript" src="jQuery.js">
   </head>
   <body>
      <p id="intro">Hello World 1!</p>
      <p id="intro">Hello World 2!</p>
      <p id="intro">Hello World 3!</p>
      <hr>
      <div id="result"></div>
      <script type="text/javascript">
          x=document.getElementsByTagName("p");
          x = x[ x.length - 1 ];

          document.getElementById( 'result' ).innerHTML = x.nodeValue;
      </script>
   </body>
</html>
于 2012-06-27T09:23:12.327 回答