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 循环查看标签中是否有文本。如果有,它将获得下一个兄弟姐妹。但是,下一个兄弟姐妹是什么?标签内只有一个节点,即文本。那里会有什么吗?为什么这里有一个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 回答