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>

上記のコードが機能しないのはなぜですか。ステートメントdocumetn.write(x.lastChild.nodeValue());を使用して、[Hello World 3!]を表示したいと思います。前もって感謝します...

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()したがって、デバッグにはまたはを使用することをお勧めします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 に答える