【问题标题】:How to append a variable containing a function [duplicate]如何附加包含函数的变量[重复]
【发布时间】:2021-06-20 16:39:57
【问题描述】:

我创建了一个对象数组和一个在创建组件时循环该数组的函数,我试图将组件附加到 HTML 中的 div,但我不断收到以下错误:app.js:722 Uncaught TypeError:无法读取 null 的属性“追加”

还有没有办法将“方法”组件附加到不同的 div 中?

有人可以帮忙吗?我想知道如何在 vanilla Javascript 中做到这一点。

let internationalCountries = [
    {
        name: "Hermes",
        method: "Standard Delivery",
        timmeScale: "Delivery within 5 to 7 working days",
    },
    {
        name: "USP",
        method: "Standard Delivery",
        timmeScale: "Delivery within 1 to 2 working days",
    },
    {
        name: "DPD",
        method: "Standard Delivery",
        timmeScale: "Delivery within 11 to 21 working days",
    },
]

let renderCountryList = () => {
    let itemName = "";
    let method = "";
    
    for (let i = 0; i < internationalCountries.length; i++){
        itemName += '<li class="country">'+ internationalCountries[i].name +'</li>';
        method += '<div class="delivery-info"> <p>' + internationalCountries[i].method + '</p> <p>' + internationalCountries[i].timmeScale + '</p> </div>';
    }
    return itemName, method;
    
}
renderCountryList()

let list = document.querySelector('.country-list')
let countryList = renderCountryList();
console.log(countryList)
list.append(countryList)
<div>
   <ul class="country-list">
                                
   </ul>
</div>

【问题讨论】:

  • 所以它说它找不到元素。也追加不带字符串
  • 是的,当我 console.log(list) 我得到 null,不知道为什么?
  • 很明显,您的选择器在 JavaScript 运行时没有匹配任何元素。
  • 如果您将代码放在JSfiddle 中,您的代码就可以工作,因此 Javascript 很可能在生成 HTML 之前运行

标签: javascript


【解决方案1】:

您是在 HTML 之前执行 javascript 吗?通常,如果元素尚未渲染,您会收到此错误。

尝试将 javascript 放在 HTML 文件末尾的各种元素之后。

【讨论】:

  • 如您所见,如果您运行代码,它实际上显示了 html 标签,并且似乎被压缩了,我该如何解决?
  • @RMP1992 在您的 for 循环中,您当前只是创建一个字符串(即使该字符串看起来像 HTML 元素)。您需要使用像 createElement() 这样的 DOM 标签来构建您的 HTML 元素和然后使用 appendChild() 将它们添加到您的父元素中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2012-10-12
  • 2019-03-20
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
相关资源
最近更新 更多