问:所有变量都引用代码中已定义的内容,例如var navigation> document> id .. var listItems引用为navigation> children。
而var锚指向以前在文档中未定义的listItem?那个怎么样??代码如何在不知道listItem是什么的情况下找到与listItem相关的<a>?
app.js
//选择navargation
var navigation = document 。getElementById (“ navigation” );
//从导航中选择所有listItems var listItems = navigation ; //当按下导航链接时,var linkListener = function (){ console 。日志(“单击监听器!” );} var bindEventsToLinks = function (listItem ){ //选择锚var anchor =
listItem ;
//将linkListener绑定到anchor元素(a)anchor 。onclick = linkListener ; }为(VAR我= 0 ;我< listItems中。长度;我++ ){ bindEventsToLinks (listItems中[我]); }
index.html
<!DOCTYPE HTML>
< HTML >
<头部> </头>
<体>
< UL ID = “导航” > <李> <一个HREF = “#home” >主页</一> </李> <李> <一个HREF = “#about” >关于</一> </李> <李> < a
href = “ #contact” >联系人</ a >
</ li > </ ul > < p >我最喜欢的一些东西:</ p > < ul > < li > 玫瑰上的雨滴
</ li > < li > 小猫身上的胡须
</ li > < li > 用绳子包裹的牛皮纸包装
</ li > </ ul ><
脚本 src = “ app.js” > </脚本>
</正文>
</ html >
答:您将“ listItem”传递到存储在bindEventsToLinks变量中的匿名函数中。“ listItem”本身未定义,但是代表您传递给该函数的任何内容。
当您实际调用该函数时,您的代码是bindEventsToLinks(listItems [i]);。因此,对于listItems中的每件事,您都使用它来“替换”代码中的“ listItem”一词。它的工作方式不完全相同,但是您想将其归类为“ listItems [0],listitems [1],listItems [2]等”。每次在for循环中调用该函数时,都将使用“ listItem”。
因此,可以将“ listItem”视为将在以后传递的真实事物的代理。我希望这可以清除一切!