当附加childnode时,它的抛出错误“Property'adpendChild'在类型'NodeListOf <element>'上不存在。”

时间:2017-02-22 15:23:19

标签: javascript typescript nodes appendchild

将子节点附加到 li 时,在 类型上不存在属性'appendChild'之类的错误

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

2 个答案:

答案 0 :(得分:1)

document.querySelectorAll是一个数组,而不是一个元素,你应该迭代你的li变量,但我猜你想要一个项目添加到现有列表中,如果是这样的话您应该将该项附加到列表容器<ul>...</ul>

编辑:使用document.querySelector仅选择特定元素

另外,定义新的自定义html标签是不好的做法,尝试使用类,所以对于像这样的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>

答案 1 :(得分:0)

liNodeListOf<Element>,它本身不是Element,因此它没有appendChild方法。您最想要做的就是在列表中找到一个元素:

li[0].appendChild(newNumberListItem);