Javascript事件处理程序&;While循环混淆
我正在阅读Head First AJAX,当我在第7章中遇到一些代码时,我有点困惑。本章构建了一个应用程序,该应用程序随机生成一个字母板,用户使用该字母板创建单词。创建单词后,用户单击submit,然后对单词进行评分。下面是为单词submission设置事件处理程序的代码:Javascript事件处理程序&;While循环混淆,javascript,ajax,Javascript,Ajax,我正在阅读Head First AJAX,当我在第7章中遇到一些代码时,我有点困惑。本章构建了一个应用程序,该应用程序随机生成一个字母板,用户使用该字母板创建单词。创建单词后,用户单击submit,然后对单词进行评分。下面是为单词submission设置事件处理程序的代码: function initPage() { randomizeTiles(); var submitDiv = document.getElementById("submit"); while (a.nodeNa
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语句
应用程序演示:
应用程序文件:
如有任何及所有意见,将不胜感激 该代码处理将其他内容放入div元素中的情况,例如空格字符:
<div id="submit">
<a href="#">Submit Word</a>
</div>
在某些浏览器中,这将在链接之前生成文本节点
为什么会有一个,而不是一个,如果,可能只是需要谨慎。如果某些浏览器将一个文本节点放在那里,则某些浏览器可能会将其设置为多个文本节点