- first - item1
- first - item2
- second - item1
- second - item2
- third - item1
- third - item2
它们均用id="mylist"来标识,
如果在IE中用Javascript遍历访问每个list是很容易做到的, 直接用document.all["mylist', i], 这里的i表示子索引号, 即要访问的第几个列表元素.
按照DOM2标准,id属性是作为唯一标识的,也就是说全部HTML文档中id不可能重复出现, 针对上述示例, 如果在Mozilla Firefox中只能用document.getElementById("mylist")访问第一个列表元素, 那么剩下的两个又如何访问呢?
一个简单的方法是先访问document.all, 然后在该集合中遍历同名id的所有元素,
但DOM2并不支持document.all集合, 所以, 在Mozilla Firefox中你可以用document.getElementsByTagName("*")来完成, 见下面的代码:
例如,我们要访问第i个列表元素:
var all = document.getElementsByTagName("*");
var count = 0; // 列表元素计数
for (var n = 0; n < all.length; ++n)
{
if (all[n].id == "mylist" && count++ == i)
{
// all[n]就是你要得到的第i个列表元素
break;
}
}
一般情况下,如果是在表单中访问同名的元素(也就是name属性值相同),直接用document.getElementsByName("mylist")[i]就可以了,IE和Mozilla Firefox均支持。
可能有人会问,为什么不在
- 元素中也用name表示同一类型的元素呢?我们知道,name属性仅在表单元素中出现,在非表单元素中出现是不符合HTML/XHTML文档标准的,如果不相信,你可以将你的文档放到www.w3.org上进行验证。
当然,你要这么做也是可以的,我已验证过用document.getElementsByName("mylist")[i]方式访问没有一点问题。
但不符合标准的事情,你会去做吗?