好的,所以我试图从一本书中理解这个例子的逻辑,因为我找不到任何支持这种语法的文档,但它似乎有效。
现在,下面的示例将从更大的代码段中删除,但出于我想要解释/理解的目的,我只展示相关部分。
如果您需要查看完整示例,可以在此处下载:
http://javascriptbook.com/code/c06/
这是使用变异事件的例子。
它所做的只是计算这个特定ul元素中的所有li元素并显示该数字。
HTML
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<h2><span id="counter">Number of Items</span></h2>
JavaScript
var listitems = list.getElementsByTagName('li').length;
var counter = document.getElementById('counter');
counter.innerHTML = listitems;
这是本书中的例子,它可以正常工作。我无法理解它,因为我从未见过getElementsByTagName方法的id名称。我知道你可以使用document.getElementsByTagName和element.getElementsByTagName但这似乎是使用id名称,除非我在这里遗漏了一些东西。 “list”既不是文档也不是元素名称。代码中对它的唯一引用是ul元素的id名称。
我知道这样做的唯一方法是......
var list = document.getElementById('list');
listitems = list.getElementsByTagName('li').length;
var counter = document.getElementById('counter');
counter.innerHTML = listitems;
或者如果你想要一行......
var listitems = document.getElementById('list').getElementsByTagName('li').length;
var counter = document.getElementById('counter');
counter.innerHTML = listitems;
......而且这两项都有效。但是上面的原始例子也是如此,我不知道为什么。我找不到任何支持或解释为什么以及如何使用带有getElementsByTagName方法的id名称的方法。
有人可以在这里提供一些解释吗?欣赏它。