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'が* live *であり、外部から変更することができないためです。とにかく、 'addEventListener'を使うのが良いでしょう。 – PeterMader