Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 财产';id';不存在于类型';节点';在cloneNode之后的普通JS中_Javascript_Typescript_Dom_Visual Studio Code_Clonenode - Fatal编程技术网

Javascript 财产';id';不存在于类型';节点';在cloneNode之后的普通JS中

Javascript 财产';id';不存在于类型';节点';在cloneNode之后的普通JS中,javascript,typescript,dom,visual-studio-code,clonenode,Javascript,Typescript,Dom,Visual Studio Code,Clonenode,我有一个纯JS函数,它基于一块“模板”HTML向页面添加消息 VS code正在抱怨clone.id和clone.classList,因为节点不能具有这些属性 现在,我看到的每一个关于克隆像这样的HTML块的答案和教程基本上都说要做我正在做的事情 我还可以看到这是一个Typescript错误,尽管据我所知,这也会增强VS代码JS检查的能力,所以目前我假设这是一个有效的错误(?) 一个节点没有这样的ID是有道理的,但是当我这样做时,设置ID并向这个节点的外部元素添加类的正确方法是什么?再一次,所有

我有一个纯JS函数,它基于一块“模板”HTML向页面添加消息

VS code正在抱怨
clone.id
clone.classList
,因为节点不能具有这些属性

现在,我看到的每一个关于克隆像这样的HTML块的答案和教程基本上都说要做我正在做的事情

我还可以看到这是一个Typescript错误,尽管据我所知,这也会增强VS代码JS检查的能力,所以目前我假设这是一个有效的错误(?)


一个节点没有这样的ID是有道理的,但是当我这样做时,设置ID并向这个节点的外部元素添加类的正确方法是什么?再一次,所有的谷歌搜索都会让我找到和我现在做的完全一样的例子

您可以通过使用JSDOC指定它的类型来修复它,例如:

/**@type{HTMLElement}*/
const clone=elementToCopy.cloneNode(true);
更好的方法是
instanceof

const clone=elementToCpoy.cloneNode(true);
if(HtmleElement的克隆实例){
...
}

您可以通过使用JSDOC指定它的类型来修复它,例如:

/**@type{HTMLElement}*/
const clone=elementToCopy.cloneNode(true);
更好的方法是
instanceof

const clone=elementToCpoy.cloneNode(true);
if(HtmleElement的克隆实例){
...
}

我假设您正在克隆HTMLElement(派生自元素,从节点驱动)

节点没有
id
属性,但是
HTMLElement
(还有
元素
)有

您只需告诉编译器克隆的节点比
节点
更具体。例如

const clone = elementToCopy.cloneNode(true) as HTMLElement;
如果你真的想安全,你可以明确地检查它。例如:

const clone = elementToCopy.cloneNode(true)
if (clone instanceof HTMLElement) {
  clone.id = `js_message_alert_${msg_ct}`
  ...
}

取决于您。

我假设您正在克隆一个HTMLElement(一个派生自元素的元素,它从节点驱动)

节点没有
id
属性,但是
HTMLElement
(还有
元素
)有

您只需告诉编译器克隆的节点比
节点
更具体。例如

const clone = elementToCopy.cloneNode(true) as HTMLElement;
如果你真的想安全,你可以明确地检查它。例如:

const clone = elementToCopy.cloneNode(true)
if (clone instanceof HTMLElement) {
  clone.id = `js_message_alert_${msg_ct}`
  ...
}

取决于你。

如果这是一个TypeScript文件,但它是一个普通的JavaScript文件,哪一个会起作用。哦,是的…ups…被弄糊涂了,现在更新了我的答案哪一个会起作用,如果这是一个TypeScript文件,但它是一个普通的JavaScript文件。哦,是的…ups…被弄糊涂了,现在更新了我的答案,这本质上是一个TypeScript错误,因为
cloneNode
返回一个
节点,正如您所怀疑的,该节点没有
id
classList
属性。在TypeScript中,您可以在
cloneNode(true)
之后加上
作为HTMLElement
,并将其终止。这本质上是一个TypeScript错误,因为
cloneNode
返回一个
节点,正如您所怀疑的,该节点没有
id
类列表
属性。在TypeScript中,您可以在
cloneNode(true)
之后加上
作为HTMLElement
,并称之为一天。不过这是针对TS文件的,不是吗?我无法在纯JS文件中执行此操作….
,因为HTMLElement
无法工作。他没有使用TypeScriptOK,具体检查有效,谢谢!:)这是一个TS文件,不是吗?我无法在纯JS文件中执行此操作….
,因为HTMLElement
无法工作。他没有使用TypeScriptOK,具体检查有效,谢谢!:)