未捕获类型错误:不能设置属性'onClick'的定义

Uncaught TypeError: cannot set property 'onClick' of undefined

本文关键字:onClick 定义 属性 设置 类型 错误 不能      更新时间:2023-09-26

我正在做一个HTML音乐创建器。每次我运行JavaScript函数从td标签的第八个元素开始向每个td元素添加onClick属性时,我都会得到一个错误。我得到错误:

"未捕获的类型错误:无法设置属性'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");
    }
}

如果你有任何想法,请帮助!

谢谢,
<我> Tendel t .

两件事,

  1. 你需要检查元素是否存在(如果没有你的标记很难判断)。

试试

var element = document.getElementsByTagName("td")[i];
element && element.onclick = function(){
    switchNote( num, note )
};
  • onclick处理程序的值不能是字符串,必须是函数。
  • 不应将值赋给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");
            }
        }
    }