html需要调用js中同一个id两次,显然ID是唯一的,所以用class代替时,getElementBy应该怎么办?

2025-03-01 23:25:02
推荐回答(4个)
回答1:

  1. 你可以给两个元素设置一个相同值得name属性,然后用getElementByName("nameValue")方法返回一数组,数组会包含那两个相同name值的元素对象。

    之后可以用for语句遍历数组,处理那两个元素对象。

  2. 还有一种方法是给那两个元素设置相同的class值;

    再封装一个函数,先获取那两个对象的父级对象,再遍历该父级的所有后代,用if判断className为你设置的class值时,将其压入一个创建的数组中,最后返回该数组。

    之后同样可以用for语句遍历返回的数组,处理那两个元素对象。

  3. 还有也可以就给两个元素不同的id值,而将它们的处理代码块封装成一个函数,再将获取的两个元素对象分别调用该函数。

回答2:

可以实现一个自己的getElementByClass。如果每个元素只设置一个class的话,那么很简单
document.getElementByClass = function(n) {
var el = [],
_el = document.getElementsByTagName('*');
for (var i=0; i<_el.length; i++ ) {

if (_el[i].className == n ) {
el[el.length] = _el[i];
}
}
return el;
}
使用方法就跟getElementByTag类似。

如果元素会有多个class的话要稍微复杂点,可以参考上面的例子修改。或者看看这里:
http://stackoverflow.com/questions/1933602/how-to-getelementbyclass-instead-of-getelementbyid-with-javascript

回答3:

如果想简单,就用jquery吧,$(".className")就得到jquery对象了。

回答4:

自己实现
document.getElementByClass = function(n) {
var el = [],
_el = document.getElementsByTagName('*');
for (var i=0; i<_el.length; i++ ) {

if (_el[i].className == n ) {
el[el.length] = _el[i];
}
}
return el;
}