开发者问题收集

javascript createElement 通过 appendChild 返回错误

2019-08-14
89

我正在尝试编写一个简短的 javascript 函数,以便将上一个/下一个按钮添加到我组装的 css-slider 中。
我无法访问 DOM,因此我想我只需通过 javascript 插入 div 即可。以下是函数:

function createfn(){
  var element = document.createElement("div");
  var prev = document.createTextNode("<");
  element.appendChild(prev);
  document.getElementsByClassName("sqs-gallery")[0].appendChild(element);
}
window.onload=createfn();

我收到错误:

"Cannot read property 'appendChild' of undefined"

带有类 .sqs-gallerydiv 容器肯定出现在页面上。我怀疑这是否在 DOM 完全加载之前以某种方式运行,但我有 window.onload ,它(我相信)应该等到所有内容都加载完毕后再运行该函数。

非常感谢任何和所有的想法和帮助!

2个回答

您执行 window.onload=createfn() ;

这意味着您将 createfn() 的结果分配给 onload (而不是函数)。 并且函数“ createfn ”立即执行(不等待窗口加载)。

只需删除括号即可分配处理程序而不是函数值。

Alex Vovchuk
2019-08-14

如果您将代码保留为 window.onload=createfn() (带括号),则 createfn 将在代码开始运行时直接运行(甚至在 DOM 加载之前),因为结果需要分配给 window.onload

您应该尝试做的是分配函数,而不是结果: window.onload=createfn 。这应该可以正常工作。

Spearmint
2019-08-14