Javascript removeChild&。这孩子不工作

Javascript removeChild&。这孩子不工作,javascript,onload,appendchild,removechild,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

我正在尝试使用一个非常简单的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>

函数bannerload(){
var banner=新图像();
banner.src=“IMG/banner.gif”;
var加载=新图像();
load.src=“IMG/load.gif”;
var bannerelation=document.getElementById(“BANNER”);
bannerelation.removeChild(banner);
bannerelation.appendChild(加载);
}
但是,它不起作用。页面仅加载banner.gif,而此图像从未更改为loading.gif。我不明白为什么,请帮忙


谢谢

这不起作用的原因是您试图添加一个子项并删除一个非子项的子项

您正试图从名为BANNER的元素中删除名为BANNER的子元素

显然,名为BANNER的元素没有名为BANNER的子元素。您有两种选择:将id赋予子元素并调用`banner.parent.removeChild(banner)或以下选项:

示例鹬

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

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

我想你的问题是你想把一个不存在的孩子带走

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" />
...
var banner=document.getElementById('id\u banner'))
banner.src='IMG/banner.gif'//或'IMG/loading.gif',具体取决于所需的选项
...
...

是否有理由不将现有img的src更改为“加载”src?您可以使用
replaceChild
-少调用一次函数。:-)@RobG我已经很久没有这样做了。我只是想对他的代码做一点小小的修改。如果你愿意的话,你可以自己给个答案,我会投票,或者我可以把这个换成同样的答案?