Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript事件处理程序&;While循环混淆_Javascript_Ajax - Fatal编程技术网

Javascript事件处理程序&;While循环混淆

Javascript事件处理程序&;While循环混淆,javascript,ajax,Javascript,Ajax,我正在阅读Head First AJAX,当我在第7章中遇到一些代码时,我有点困惑。本章构建了一个应用程序,该应用程序随机生成一个字母板,用户使用该字母板创建单词。创建单词后,用户单击submit,然后对单词进行评分。下面是为单词submission设置事件处理程序的代码: function initPage() { randomizeTiles(); var submitDiv = document.getElementById("submit"); while (a.nodeNa

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

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>

在某些浏览器中,这将在链接之前生成文本节点

为什么会有一个
,而不是一个
,如果
,可能只是需要谨慎。如果某些浏览器将一个文本节点放在那里,则某些浏览器可能会将其设置为多个文本节点