在PhpStorm / WebStorm中的Node类型中未定义属性ID

时间:2019-03-08 09:30:28

标签: javascript dom phpstorm webstorm

Php / WebStorm在我的JavaScript代码中报告了这个奇怪的警告,指出未在元素/节点中定义属性id。事实是,该元素是从父元素获取的firstChild元素。

function hideChildAndUpdateID(title) {
    let parent = document.getElementById('parent');
    let child = parent.firstChild;

    // Hiding the child.
    child.style.display = 'none';
    // Temporary ID so we can find it later.
    child.id = 'child-tmp-id'; // Warning occurs here
}

这是Php / WebStorm的全部消息

Property id is not defined in type Node less... (Ctrl+F1) 
Inspection info: This inspection reports assignments to undefined properties of explicitly type-annotated variables.

此代码本身实际有效。 child元素将其id更改为我设置的值,但是此警告使我烦恼。

我尝试使用child.setAttribute('id', 'child-tmp-id'),但是无法正常工作。

在处理firstChild时是否有约定或者仅仅是Php / WebStorm的问题?

1 个答案:

答案 0 :(得分:1)

节点不仅可以是元素,也不必具有id属性。尝试使用firstElementChild代替它返回作为元素的第一个孩子:

function hideChildAndUpdateID(title) {
    let parent = document.getElementById('parent');
    let child = parent.firstElementChild;

    // Hiding the child.
    child.style.display = 'none';
    // Temporary ID so we can find it later.
    child.id = 'child-tmp-id'; 
}