javascript - 将 getElementById 返回值视为数组

标签 javascript jquery html arrays dom

我有一个 Javascript 如下;

if (document.getElementsByClassName('someClass'))
{
obj = document.getElementsByClassName('someClass');
}
else if (document.getElementById('someId'))
{
obj = document.getElementById('someId');
}

现在有一个 for 循环作用于这个“obj”

for(i=0; i<obj.length;i++){
obj[i].addEventListener() // Pseudo code shown here
} 

问题是,如果 obj 作为数组返回,即从 document.getElementsByClassName 返回,则此方法可以正常工作。

但如果 document.getElementById('someId') 为 true,则不会返回数组,并且 for 循环将无法执行。

鉴于我无法对 HTML 代码本身执行任何操作,如何解决此问题?

谢谢。

最佳答案

您可以简单地创建一个数组:

else if (document.getElementById('someId')) {
    obj = [document.getElementById('someId')]; // note the array literal
}

getElementById 的返回值将始终是一个 DOM 元素,因此您无法更改它。 ID 应该是唯一的,因此即使您有多个具有相同 ID 的元素,它也只会返回其中之一。

鉴于 IE8 及更低版本中不存在 getElementsByClassName,您还应该查看 document.querySelectorAll [docs] (至少在 IE8 中有效)。

关于javascript - 将 getElementById 返回值视为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757964/

相关文章:

javascript - 代码在不该运行的时候运行?

javascript - 如何追踪正在修改 DOM 中 div 内联样式的 JavaScript?

javascript - 如何使用 javascript 更改 <TD> 前景色/文本颜色以及边框颜色

javascript - 将 curl 命令转换为 JavaScript

html - 如何使图像网格适合所有屏幕分辨率?

html - CSS - 如何让不同 parent 的 child 高度相同?

javascript - 我如何将这段 JavaScript 代码翻译成 Python 代码?

JavaScript 304 未修改问题

Android 视频链接显示在 android textview 中,就像我们使用 html.imageGetter 显示图像一样

javascript - JQuery:如果元素不包含文本