【问题标题】:Cannot read property 'style' in Element[]无法读取元素 [] 中的属性“样式”
【发布时间】:2019-08-02 03:48:47
【问题描述】:

打字稿。 document.elementsFromPoint 返回Element[],但“元素”不包含“样式”之类的属性。结果,我得到:

未捕获的类型错误:无法读取未定义的属性“样式”。

如何在 TypeScript 中更改“元素”的样式。 我的代码:

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)";
                }
            }

        };

【问题讨论】:

  • 数组索引从 0 开始
  • 数组是从零开始的; divs[2] 未定义
  • 通常我不允许这样的严重错误。打扰一下。但是现在如何升级我的 div?
  • 不确定您所说的 upgrade 新 div 是什么意思。将divs[2] 更改为divs[1]

标签: typescript strong-typing


【解决方案1】:

您正在检查 divs 数组的长度是否为 2,然后您尝试从第 3 个数组元素中读取(JavaScript 中的数组是零索引的)。

尝试将其更改为divs[1]

【讨论】:

  • 我为我的疏忽道歉。但是现在如何升级我的 div?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多