我正在研究HTML音乐创作者。每次运行JavaScript函数时,我都会收到一个错误,从onClick
标记的第八个元素开始向每个td
元素添加td
属性。我收到错误:
“未捕获的TypeError:无法设置未定义的属性'onClick'。”
这是我的JavaScript:
function addOnclick() {
var num = 1;
var note = 0;
i = 8;
while (i < (17 * 12) + 8 + 1) {
document.getElementsByTagName("td")[i].onClick = "switchNote(" + num + ", " + note + ")";
if (i == 25 || i == 42 || i == 59 || i == 76 || i == 81 || i == 98 || i == 115 || i == 132 || i == 149 || i == 166 || i == 183 || i == 200 || i == 217) {
note = note + 1;
num = 1;
}
i = i + 1;
num = num + 1;
console.log("working");
}
}
如果您有任何想法,请帮忙!
谢谢,
答案 0 :(得分:1)
两件事,
尝试类似
的内容var element = document.getElementsByTagName("td")[i];
element && element.onclick = function(){
switchNote( num, note )
};
答案 1 :(得分:0)
您应该使用OnClick
而不是将值分配给setAttribute
,并检查元素是否已定义,如下所示:
function addOnclick() {
function addOnclick() {
var num = 1;
var note = 0;
i = 8;
while (i < (17 * 12) + 8 + 1) {
var elem = document.getElementsByTagName("td")[i];
if (elem)
{
elem.setAttribute('onclick', "switchNote(" + num + ", " + note + ")")
}
if (i == 25 || i == 42 || i == 59 || i == 76 || i == 81 || i == 98 || i == 115 || i == 132 || i == 149 || i == 166 || i == 183 || i == 200 || i == 217) {
note = note + 1;
num = 1;
}
i = i + 1;
num = num + 1;
console.log("working");
}
}
}