当我在第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/
任何和所有输入将不胜感激。
答案 0 :(得分:0)
代码处理你在div元素中放入其他内容的情况,例如空格字符:
<div id="submit">
<a href="#">Submit Word</a>
</div>
这会在某些浏览器链接之前生成一个文本节点。
为什么有while
而不只是if
可能只是要小心谨慎。如果某些浏览器在那里放置文本节点,则某些浏览器可能会使其成为多个文本节点。