我正在创建一个HTML音乐制作程序。我目前正在处理笔记系统,当你点击一个笔记时,它会将颜色切换为黑色。但是,当我使用我的Javascript函数时,它会显示错误Uncaught TypeError: cannot set property 'backgroundColor' of undefined
var pattern = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
function switchNote(num, note) {
var trId = document.getElementsByTagName("tr")[note + 8].id;
pattern[num] = note;
document.getElementById(trId).lastChild.style.backgroundColor = "#000";
return "switched";
}
答案 0 :(得分:1)
它表示.lastChild
不是DOM 元素(.nodeType
为1
的节点。 lastChild
是textNode或commentNode,它没有style
属性。
您可以使用lastElementChild
属性获取最后一个元素。
另一种选择是使用.children
属性:
var children = [].slice.call(element.children);
var last = children[children.length - 1];
// for getting the last 2 children of the element:
// var last2 = children.slice(-2);
请注意,如果document.getElementsByTagName("tr")[note + 8]
返回目标元素,则无需使用document.getElementById
方法重新查询DOM。 ID必须是唯一的,并且读取元素的.id
属性以便.getElementById
再次获取它并没有多大意义。
答案 1 :(得分:0)
试试这个:
var pattern = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
function switchNote(num, note) {
var trId = document.getElementsByTagName("tr")[note + 8].id;
pattern[num] = note;
document.getElementById(trId).children[document.getElementById(trId).children.length].style.backgroundColor = "#000";
return "switched";
}