我需要从列表中选取列表项,然后执行像添加事件处理程序的操作。我可以想到两种做法。识别列表项索引 - 哪种方法更好?
HTML:
<ul id="list">
<li id="listItem-0"> first item </li>
<li id="listItem-1"> second item </li>
<li id="listItem-2"> third item </li>
</ul>
使用IDs-
for(i=0;i<3;i++) { document.getElementById("listItem-"+i).addEventListener("click",foo,false); }
使用的childNodes属性 -
for(i=0;i<3;i++) { document.getElementById("list").childNodes[i] .addEventListener("click",foo,false); }
我使用的是第一种方法的原因是,在函数foo,如果我想在该项目位于列表中的索引,我可以通过拆分ID做到这一点 -
function foo()
{
tempArr = this.id.split('-');
index = tempArr[tempArr.length-1]; // the last element in the array
}
我可以没有想到通过使用第二种方法做到这一点,也就是说,不使用id命名方案。
的问题:
- 我要如何使用第二种方法或任何更好的方法
- 是否有一些非常坏的影响后的第一个方法的指数?
对于将空白视为文本节点的浏览器,第一种方法将失败。你并没有真正解释你为什么关心*索引*,所以我不打算推测是否有更好的解决方案。 – Shog9 2008-11-15 15:46:21