tes*_*dtv 0 html javascript arrays jquery dom
我有一个Javascript如下;
if (document.getElementsByClassName('someClass'))
{
obj = document.getElementsByClassName('someClass');
}
else if (document.getElementById('someId'))
{
obj = document.getElementById('someId');
}
Run Code Online (Sandbox Code Playgroud)
现在有一个for循环作用于这个"obj"
for(i=0; i<obj.length;i++){
obj[i].addEventListener() // Pseudo code shown here
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果obj作为数组返回,则可以正常工作document.getElementsByClassName.
但如果document.getElementById('someId')是,它不返回数组并且for循环无法执行.
我怎么能解决这个问题,因为我对HTML代码本身无能为力?
谢谢.
您只需创建一个数组:
else if (document.getElementById('someId')) {
obj = [document.getElementById('someId')]; // note the array literal
}
Run Code Online (Sandbox Code Playgroud)
返回值getElementById将始终是DOM元素,因此您无法更改它.ID应该是唯一的,因此即使您有多个具有相同ID的元素,它也只会返回其中一个.
鉴于getElementsByClassNameIE8及以下版本不存在,您还应该查看document.querySelectorAll [docs](至少在IE8中有效).
只需更换
obj = document.getElementById('someId');
Run Code Online (Sandbox Code Playgroud)
同
obj = [document.getElementById('someId')];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10273 次 |
| 最近记录: |