【问题标题】:How do i resolve "Cannot read properties of undefined (reading 'ownerDocument')"如何解决“无法读取未定义的属性(读取'ownerDocument')”
【发布时间】:2022-01-26 12:08:49
【问题描述】:

我正在尝试在页面加载时在主 div 中添加一个 div,当我编写这样的代码时它可以工作:

function DivAdder() {
  $('#mainDiv').append('<div class="newspaper-wrapper"></div>');
}
DivAdder();
window.onload = DivAdder;

但是我想让这个函数有一个参数,这样我就可以传递它的名字,而不是在 .append 函数中写入整个字符串。我写了这样的东西,但标题错误:

function DivAdder(variable) {
  $('#mainDiv').append($(variable));
}
DivAdder('<div class="newspaper_wrapper"></div>');
window.onload = DivAdder;

我也试过这个:

$('#mainDiv').append(variable);

但是什么也没发生。我阅读了一些文档,但没有成功。 感谢帮助

【问题讨论】:

    标签: javascript html jquery dom


    【解决方案1】:

    这是因为window.onload 传递了一个事件对象作为第一个参数。如果你console.log(variable),它会告诉你这是一个事件。

    您需要将此第一个参数保留为可选事件,并将您的 HTML 作为第二个参数传递:

    function DivAdder($event, html) {
      console.log("Event = ", $event)
        console.log("Adding div : " , html)
      $('#mainDiv').append(html);
    }
    DivAdder(null, '<div class="newspaper_wrapper">TEST</div>');
    window.onload = DivAdder; // This will call DivAdder( LoadEvent )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="mainDiv"></div>

    我不确定你为什么首先分配window.onload = DivAdder,因为这不会添加任何HTML,也不会做任何事情。你可以完全摆脱它,它只会造成麻烦。

    function DivAdder(html) {
        console.log("Adding div : " , html)
      $('#mainDiv').append(html);
    }
    DivAdder('<div class="newspaper_wrapper">TEST</div>');
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="mainDiv"></div>

    【讨论】:

    • 嘿,感谢您的帮助,我尝试了您发送的代码,但仍然无法正常工作。我看不到任何 div 显示在页面上。
    • 嗯.. 你复制错了 :) 因为运行我的 sn-p,它可以工作
    • 好吧,我检查了很多次。我知道为什么,但它不起作用。它在控制台上打印,但不会在页面上添加任何内容。
    • 检查了 JSFIddle 上的代码,它可以工作,但它在我的浏览器上也可以工作。我知道可能是什么问题
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2019-04-30
    • 2021-05-10
    • 1970-01-01
    • 2019-11-21
    • 2022-07-06
    • 2018-12-21
    • 2020-11-17
    相关资源
    最近更新 更多