'appendChild'on 'Node':新的子元素为空
Failed to execute 'appendChild' on 'Node': The new child element is null
这个奇怪的bug已经困扰我半个小时了。我正在动态地尝试仅使用JavaScript应用滑块。你知道我为什么会这样吗?我可以在SO上找到其他问题,但不明白解决方案。我是JS的新手,如果有人能给我解释一些外行的话,我将非常感激。这是我的代码。
标记
<!DOCTYPE html>
<html>
<head>
<title>JS sample test page</title>
<link rel="stylesheet" type="text/css" href="jquery.bxslider.css">
</head>
<body>
<div class="og-fullimg"></div>
<script type="text/javascript" src="jquery-1.11.1.js"></script>
<script type="text/javascript" src="jquery.bxslider.min.js"></script>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
JAVASCRIPT // code for thumbnail slider begins
(function() {
var ogImg = document.getElementsByClassName("og-fullimg");
alert(ogImg.length);
var bxSlider = document.createElement("ul"); //created ul
bxSlider.setAttribute("class", "bxslider"); // gave a class name bxslider.
for (i = 1; i < 4; i++) {
var itemsList = document.createElement("li");
var linkImages = document.createElement("img");
linkImages.src = "images/bid_" + i + ".jpg";
itemsList.appendChild(linkImages);
bxSlider.appendChild(itemsList);
}
ogImg[0].appendChild(bxSlider);
document.body.appendChild(ogImg); //append everything to the body.
//call the slider.
$(document).ready(function() {
$('.bxslider').bxSlider({
auto: true,
pager: false,
adaptiveHeight: true,
slideWidth: 550
});
});
}());
// code for thumbnail slider ends.
这里有几个问题:
-
document.body.appendChild(ogImg);
是错误的。ogImg
是一个nodeList
。你不能直接将nodeList
附加到主体,并且它已经在DOM中了(你刚刚获得了document.getElementsByClassName("og-fullimg");
)。 -
您正在使用
$(document).ready()
等待调用。bxslider(),但不使用它来调用document.getElementsByClassName()
。我猜你的代码运行得太快了。如果是这种情况,那么只需将所有代码放入.ready()
处理程序中。 -
你正在使用一个非常奇怪的纯javascript和jQuery的混合切换到jQuery纯javascript可以使你的代码更小,更一致。如果你有jQuery,你也可以用它来做它擅长的事情(比如选择器和集合操作)。
我的建议是:
//create and initialize the slider.
$(document).ready(function() {
var bxSlider = $("<ul class='bxslider'></ul>"), img;
for (var i = 1; i < 4; i++) {
img = new Image();
img.src = "images/bid_" + i + ".jpg";
$("<li>").append(img).appendTo(bxSlider);
}
bxSlider.appendTo(".og-fullimg");
bxSlider.bxSlider({
auto: true,
pager: false,
adaptiveHeight: true,
slideWidth: 550
});
});
相关文章:
- 元素.appendChild()插入IE.变通方法?(与innerText与textContent相关)
- 不显示为表单元素的图像输入按钮的动态创建和appendChild
- JavaScript 检查特定元素 (iframe) 是否存在,如果不存在,则检查 appendchild
- 使用appendChild向HTML元素添加SVG元素-在IE9中失败
- 使用appendchild方法添加具有特定样式的元素
- 如何从Javascript中的appendchild复选框中获取元素状态
- 'appendChild'on 'Node':新的子元素为空
- Javascript appendChild将一个元素添加到DOM中两次
- appendChild在某些元素上不起作用
- documentFragment性能与未附加元素上的appendChild相比
- Node的参数1.appendChild没有实现接口Node.同时追加到新元素
- AppendChild不工作!,从DOM元素对象继承.我做错了什么?
- JQuery的append和Javascript的appendChild with document.写入附加元素
- 如何返回javascript DOM元素对象,并从调用者appendChild(obj)它
- 无法在JavaScript中使用appendChild添加子元素
- AppendChild:在某个元素之上的元素
- 我可以在任何HTML元素上调用appendChild吗?
- Google Caja appendChild未更新表单.元素
- 使用Ajax请求创建元素和appendChild
- 在GWT元素上使用JS appendChild