0

私は Head First AJAX を読んでいて、第 7 章でいくつかのコードに出くわしたときに少し混乱しました。この章では、ユーザーが単語を作成するために使用する文字板をランダムに生成するアプリケーションを構築します。単語が作成されると、ユーザーが [送信] をクリックすると、単語がスコアリングされます。以下は、サブミットという単語のイベント ハンドラーを設定するコードです。

function initPage() {
  randomizeTiles();
  var submitDiv = document.getElementById("submit");
  while (a.nodeName == "#text") {
    a = a.nextSibling;
  }
  a.onclick = function() { 
    alert("Please click tiles to add letters and create a word."); 
  };
}

送信ボタンの html は次のとおりです。

<div id="submit"><a href="#">Submit Word</a></div>

イベント ハンドラの設定中に使用される while ループについて混乱しています。私がこれを正しく理解していることから、while ループはタグにテキストがあるかどうかを確認します。存在する場合は、次の兄弟を取得します。しかし、次の兄弟は何ですか?タグ内には、テキストであるノードが 1 つだけあります。そこに何かあるのだろうか?ここに while ループがあるのはなぜですか? なぜ if ステートメントだけではないのでしょうか?

アプリケーションのデモ: http://www.headfirstlabs.com/books/hfajax/ch07/woggle-puzzle.html# アプリケーション ファイル: http://www.headfirstlabs.com/books/hfajax/ch07/

あらゆるご意見をお待ちしております。

4

1 に答える 1

0

このコードは、空白文字など、div 要素内に何か他のものを配置するケースを処理します。

<div id="submit">
  <a href="#">Submit Word</a>
</div>

これにより、一部のブラウザーではリンクの前にテキスト ノードが生成されます。

whileだけではなくがある理由は、ifおそらく用心するためです。一部のブラウザーがそこにテキスト ノードを配置する場合、一部のブラウザーはそれを複数のテキスト ノードにする可能性があります。

于 2012-06-02T23:17:04.923 に答える