2012-06-02 49 views
0

我正在阅读Head First AJAX,并在第7章中遇到一些代码时变得有点困惑。该章创建一个应用程序,随机生成用户用来创建单词的字母板。一旦一个单词被创建,用户点击提交,然后单词被评分。下面是设置事件处理程序字提交代码:Javascript事件处理程序和while循环混淆

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循环,为什么不仅仅是一个if语句?

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

任何和所有的投入,将不胜感激。

回答

0

的代码处理,你会把别的东西的div元素里面,例如空格字符的情况:

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

这在一些浏览器链接之前产生文本节点。

为什么有while而不仅仅是if可能只是谨慎。如果某些浏览器在其中放置文本节点,则某些浏览器可能会使其多于一个文本节点。