Javascript事件处理程序&而Loop Confusion

时间:2012-06-02 22:55:24

标签: javascript ajax

当我在第7章遇到一些代码时,我正在阅读Head First AJAX并且变得有点困惑。本章构建了一个应用程序,它随机生成一个用户用来创建单词的字母板。创建单词后,用户单击“提交”,然后对该单词进行评分。下面是为单词提交设置事件处理程序的代码:

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循环查看标签中是否有文本。如果有,它会得到下一个兄弟姐妹。但是,下一个兄弟姐妹是什么?标签中只有一个节点,即文本。那里有什么东西吗?为什么这里有一个while循环,为什么它只是一个if语句?

应用演示: http://www.headfirstlabs.com/books/hfajax/ch07/woggle-puzzle.html# 应用文件: http://www.headfirstlabs.com/books/hfajax/ch07/

任何和所有输入将不胜感激。

1 个答案:

答案 0 :(得分:0)

代码处理你在div元素中放入其他内容的情况,例如空格字符:

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

这会在某些浏览器链接之前生成一个文本节点。

为什么有while而不只是if可能只是要小心谨慎。如果某些浏览器在那里放置文本节点,则某些浏览器可能会使其成为多个文本节点。