Javascript .removeChild& .appendChild不工作

时间:2011-05-12 20:27:55

标签: javascript onload appendchild removechild

我正在尝试使用一个非常简单的Javascript函数来使用.removeChild和.appendChild将一个图像更改为另一个图像。我的代码如下:

<html> 
<head> 
<script type="text/javascript" language="javascript"> 
function bannerload(){

var banner = new Image();
banner.src = "IMG/banner.gif";

var loading = new Image();
loading.src = "IMG/loading.gif";

var bannerElement = document.getElementById("BANNER");

bannerElement.removeChild(banner);
bannerElement.appendChild(loading);
}
</script> 
</head> 

<body onload="bannerload()"> 
<div id="BANNER">
<img src="IMG/banner.gif" alt="Banner" />
</div> 
</body> 
</html>

然而,它不起作用。该页面只会加载banner.gif,此图片永远不会更改为loading.gif。我无法弄清楚为什么,有些帮助吗?!

谢谢!

2 个答案:

答案 0 :(得分:2)

这不起作用的原因是你试图添加一个孩子并删除一个不是孩子的孩子。

您正尝试从名为BANNER的元素中删除名为BANNER的子项。

显然,名为BANNER的元素没有名为banner的子元素。您有两个选择是将id提供给子元素并调用`banner.parent.removeChild(banner)或以下内容:

示例snipet

var bannerElement = document.getElementById("BANNER");
//Banner only has one child.
var child = bannerElement.children[0];

bannerElement.removeChild(child);
bannerElement.appendChild(loading);

答案 1 :(得分:0)

我认为您的问题是您正在尝试删除bannerElement中不存在的子项。

var banner = new Image();
banner.src = "IMG/banner.gif";
...
bannerElement.removeChild(banner);

看看你是如何创建一个新图像然后删除它,即使你还没有附加它?我想你应该尝试这样的事情:

var banner = document.getElementById('id_banner')
banner.src = 'IMG/banner.gif' // or 'IMG/loading.gif' depending on which one you want
...
<body onload="bannerload()"> 
    <div id="BANNER">
        <img id="id_banner" src="IMG/banner.gif" alt="Banner" />
...