我是JavaScript和StackOverflow的新手。我试图从页面中提取他所有的按钮元素,然后设置一个onclick属性给他们我已经尝试了以下,但它似乎不工作任何帮助,将不胜感激。如何设置一个带有HTML元素的动态JavaScript数组,然后为它们设置一个属性
var btn = [];
for (var i=-1; i<btn.length; i++)
{
btn[i] = this.document.getElementsByTagName("button")
.setAttribute("onClick","btnClick()");
}
console.log("array length " + btn.length);
console.log(btn);
在控制台中我得到:
script.js:13 Uncaught TypeError: this.document.getElementsByTagName(...)
.setAttribute is not a function at script.js:13
(anonymous) @ script.js:13
我已经尝试了一些不同的东西,如果我删除从代码我得到的.setAttribute
:
script.js:15 array length 0
script.js:16
[-1: HTMLCollection(13)]
-1: HTMLCollection(13)
board:button#board.btn
edCourse:button#edCourse.btnGray1
edModule:button#edModule.btnGray1
edStudent:button#edStudent.btnGray1
entCourse:button#entCourse.btnGray
entModule:button#entModule.btnGray
entStudent:button#entStudent.btnGray
length:13
resultLst:button#resultLst.btn
sap:button#sap.btn
trans:button#trans.btn
vwCourse:button#vwCourse.btnGray
vwModule:button#vwModule.btnGray
vwStudent:button#vwStudent.btnGray
0:button#entStudent.btnGray
1:button#entCourse.btnGray
2:button#entModule.btnGray
3:button#edStudent.btnGray1
4:button#edCourse.btnGray1
5:button#edModule.btnGray1
6:button#vwStudent.btnGray
7:button#vwCourse.btnGray
8:button#vwModule.btnGray
9:button#sap.btn
10:button#board.btn
11:button#trans.btn
12:button#resultLst.btn
__proto__:HTMLCollection
length:0
__proto__:Array(0)
请帮帮忙,对不起,如果这个问题之前已经问过,但我找不到答案。
没有必要在循环内部分配btn [i]。事实上,这样做或多或少是一个幸运的巧合,因为这样做并不会将不需要的东西放入btn数组中。 –
@PeterB是的。没有必要这样做。因为无论如何它们都是参考。 –
不是因为引用,而是因为'HTMLCollection's * live *并且不能从外部修改。无论如何,最好使用'addEventListener'。 – PeterMader