Javascript 使用appendChild将数组转换为列表

Javascript 使用appendChild将数组转换为列表,javascript,arrays,list,Javascript,Arrays,List,如何创建函数接受两个参数,第一个是应添加到的列表元素,第二个是将转换为列表项的字符串数组 参数是元素和arr。我试图创建list元素,并使用appendChild将数组字符串附加到元素中 函数填充(elem、arr){ elem=document.createElement(“li”); for(设i=0;i

如何创建函数接受两个参数,第一个是应添加到的列表元素,第二个是将转换为列表项的字符串数组

参数是元素和arr。我试图创建list元素,并使用appendChild将数组字符串附加到元素中

函数填充(elem、arr){
elem=document.createElement(“li”);
for(设i=0;i
错误消息:

未能在“节点”上执行“appendChild”:参数1不是类型 “节点”

您有几个问题:

  • 您正在函数中重新初始化
    elem
    ,因此传递的
    elem
    将被覆盖,这意味着您将无法向其追加元素

  • 您正在尝试将字符串附加到
    elem
    元素。这将不起作用,因为您需要附加一个节点(因为它接受一个节点,而不是一个字符串)。要附加节点,可以使用在JS中创建一个
  • HTML元素,然后将文本设置为当前数组值的文本(使用
    .textContent

  • 见下例:

    函数填充(elem、arr){
    for(设i=0;i
    
    填充元素并返回完整列表

    function filler(elem, arr){
      for(let i = 0; i < arr.length; i++){
        listItem = document.createElement('li');
        listItem.innerHTML = arr[i];
        elem.appendChild(listItem);
      }
      return elem;
    }
    
    函数填充(elem、arr){
    for(设i=0;i

    这里是一个用例
    填充(document.createElement('ul'),['a','b','c'])

    为什么要覆盖
    elem
    ?更好地使用
    textContent
    而不是
    innerHTML
    取决于OP实际需要什么,可能是有效HTML元素的列表?