添加子节点时,抛出错误"Property 'appendChild' does not exist on type 'NodeListOf<Element>'."
When appending childnode, its throwing error "Property 'appendChild' does not exist on type 'NodeListOf<Element>'."
将子节点附加到 li 时,出现类似 属性 'appendChild' 的错误在类型 'NodeListOf' 上不存在
let li: NodeListOf<Element> = document.querySelectorAll("name li");
var newItem = document.createElement("li");
var ListValue = document.createTextNode("abcd");
var ListValue = document.createTextNode("efgh");
var ListValue = document.createTextNode("ijkl");
newItem.appendChild(ListValue);
li.appendChild(ListItem);
document.querySelectorAll
是一个数组而不是一个元素,你应该遍历你的 li
变量,但我猜你想将一个项目添加到现有列表中,如果这是在这种情况下,您应该将该项目附加到列表容器 <ul>...</ul>
编辑:使用 document.querySelector
到 select 仅特定元素
此外,定义新的自定义 html 标签是一种不好的做法,请尝试使用 class,因此对于这样的 html:
<ul class="test">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
使用这个:
let li: NodeListOf<Element> = document.querySelector("ul.test");
var newNumberListItem = document.createElement("li");
var numberListValue = document.createTextNode("java");
var numberListValue = document.createTextNode("ajax");
var numberListValue = document.createTextNode("javascript");
newNumberListItem.appendChild(numberListValue);
li.appendChild(newNumberListItem);
提示:如果您使用的是 ES6,请避免使用 var
并使用 const
表示不会在您的范围内更改的值,使用 let
表示变量
let li: NodeListOf<Element> = document.querySelector("ul.test");
var newNumberListItem = document.createElement("li");
var numberListValue = document.createTextNode("java");
var numberListValue = document.createTextNode("ajax");
var numberListValue = document.createTextNode("javascript");
newNumberListItem.appendChild(numberListValue);
li.appendChild(newNumberListItem);
<ul class="test">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
li
是一个 NodeListOf<Element>
,它本身不是 Element
,所以它没有 appendChild
方法。您最有可能想做的是处理列表中的一个元素:
li[0].appendChild(newNumberListItem);
将子节点附加到 li 时,出现类似 属性 'appendChild' 的错误在类型 'NodeListOf' 上不存在
let li: NodeListOf<Element> = document.querySelectorAll("name li");
var newItem = document.createElement("li");
var ListValue = document.createTextNode("abcd");
var ListValue = document.createTextNode("efgh");
var ListValue = document.createTextNode("ijkl");
newItem.appendChild(ListValue);
li.appendChild(ListItem);
document.querySelectorAll
是一个数组而不是一个元素,你应该遍历你的 li
变量,但我猜你想将一个项目添加到现有列表中,如果这是在这种情况下,您应该将该项目附加到列表容器 <ul>...</ul>
编辑:使用 document.querySelector
到 select 仅特定元素
此外,定义新的自定义 html 标签是一种不好的做法,请尝试使用 class,因此对于这样的 html:
<ul class="test">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
使用这个:
let li: NodeListOf<Element> = document.querySelector("ul.test");
var newNumberListItem = document.createElement("li");
var numberListValue = document.createTextNode("java");
var numberListValue = document.createTextNode("ajax");
var numberListValue = document.createTextNode("javascript");
newNumberListItem.appendChild(numberListValue);
li.appendChild(newNumberListItem);
提示:如果您使用的是 ES6,请避免使用 var
并使用 const
表示不会在您的范围内更改的值,使用 let
表示变量
let li: NodeListOf<Element> = document.querySelector("ul.test");
var newNumberListItem = document.createElement("li");
var numberListValue = document.createTextNode("java");
var numberListValue = document.createTextNode("ajax");
var numberListValue = document.createTextNode("javascript");
newNumberListItem.appendChild(numberListValue);
li.appendChild(newNumberListItem);
<ul class="test">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
li
是一个 NodeListOf<Element>
,它本身不是 Element
,所以它没有 appendChild
方法。您最有可能想做的是处理列表中的一个元素:
li[0].appendChild(newNumberListItem);