无法读取 Element[] 中的 属性 'style'
Cannot read property 'style' in Element[]
打字稿。 document.elementsFromPoint return Element[]
,但是 'Element' 不包含像 "style" 这样的 属性。结果,我得到:
Uncaught TypeError: Cannot read property 'style' of undefined.
如何在 TypeScript 中更改 'Element' 的样式。
我的代码:
document.body.onclick = function(event: MouseEvent) {
let elements: Array<HTMLElement> = document.elementsFromPoint(event.clientX, event.clientY) as Array<HTMLElement>;
let divs: Array<HTMLElement> = [] as Array<HTMLElement>;
for (let i = 0; i < elements.length; i++) {
if(elements[i].tagName == 'DIV') {
divs.push(elements[i])
}
}
if (divs.length == 2) { // before if OK
console.log('2 divs!!! Unit is here!');
let flag: string = document.body.getAttribute('flag');
if (flag != '1') {
document.body.setAttribute('flag', '1');
divs[2].style.backgroundColor = "rgba( 255, 1, 0, 0.5)";
}
else {
document.body.setAttribute('flag', '0');
divs[2].style.backgroundColor = "rgba( 255, 1, 0, 0.5)";
}
}
};
您正在检查 divs
数组的长度是否为 2,然后您尝试从第 3 个数组元素读取(JavaScript 中的数组是从零开始索引的)。
尝试将其更改为 divs[1]
打字稿。 document.elementsFromPoint return Element[]
,但是 'Element' 不包含像 "style" 这样的 属性。结果,我得到:
Uncaught TypeError: Cannot read property 'style' of undefined.
如何在 TypeScript 中更改 'Element' 的样式。 我的代码:
document.body.onclick = function(event: MouseEvent) {
let elements: Array<HTMLElement> = document.elementsFromPoint(event.clientX, event.clientY) as Array<HTMLElement>;
let divs: Array<HTMLElement> = [] as Array<HTMLElement>;
for (let i = 0; i < elements.length; i++) {
if(elements[i].tagName == 'DIV') {
divs.push(elements[i])
}
}
if (divs.length == 2) { // before if OK
console.log('2 divs!!! Unit is here!');
let flag: string = document.body.getAttribute('flag');
if (flag != '1') {
document.body.setAttribute('flag', '1');
divs[2].style.backgroundColor = "rgba( 255, 1, 0, 0.5)";
}
else {
document.body.setAttribute('flag', '0');
divs[2].style.backgroundColor = "rgba( 255, 1, 0, 0.5)";
}
}
};
您正在检查 divs
数组的长度是否为 2,然后您尝试从第 3 个数组元素读取(JavaScript 中的数组是从零开始索引的)。
尝试将其更改为 divs[1]