Javascript:多次使用document.getElementById(id).appendChild()
Javascript: Multiple use of document.getElementById(id).appendChild()?
在以下代码中使用document.getElementById(id).appendChild(img)
会给浏览器带来问题吗?我想知道,在文档的生命周期中,我是否多次使用appendChild((更新图像可能会导致内存问题,或者只创建一个节点?我知道下面的代码只加载一次图像,但我计划扩展代码,将图像随机更改为动画。该文件将显示对document.getElementById(id).appendChild(img)
在文档生命周期中多次出现。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var img = document.createElement("IMG");
images = new Array();
function random_image(id)
{
var i = 0;
for(i = 0; i < 7; i++)
{
images[i] = "image" + i + ".jpg"
}
var random = (Math.floor(Math.random()*7));
img.src = images[random];
document.getElementById(id).appendChild(img);
}
</script>
</head>
<body onload = "random_image('image')">
<div id="image"></div>
</body>
</html>
如果你是作为动画来做的,你最好只更改图像标签的src和适当的图像url,而不是替换图像标签本身。
*根据第一条评论进行编辑*
您已经有了所需的代码,但您要做的是每次都将图像重新附加到文档中。我的建议是改变你已经得到的图像的src。
var img = document.createElement("IMG");
images = new Array();
var i = 0;
for(i = 0; i < 7; i++){
images[i] = "image" + i + ".jpg"
}
function onLoad(){
random_image('image');
document.getElementById(id).appendChild(img);
}
function random_image(id){
var random = (Math.floor(Math.random()*7));
img.src = images[random];
}
window.onload = onLoad;
请注意,我在某种程度上假设文档加载evnet不是您调用该函数的唯一时间。如果是的话,那么你的问题就没有意义了,因为你问的是经常打电话的影响。按照我所展示的方式,您首先从文档中获取代码(这是一件好事(,并使其成为任何调用代码都可以替换由该图像标记来源的图像文件。
如果使用removeChild从#imagediv中移除图像,则不会。当您从文档中删除图像时,垃圾回收会迅速释放内存。因此,只要您没有将隐藏在DOM中的图像保留在某个位置,就没有什么可担心的。
一个更好的想法是更改现有img标记的来源,这将在不创建或销毁新元素的情况下替换图像。
如果你只做一次,那就可以
如果多次这样做,它将添加许多图像
相关文章:
- reactjs this.refs vs document.getElementById
- 如何通过adf中的document.getElementById获取inputText字段值
- 无法获取文档.GetElementById工作正常
- document.getElementById(“st”).click();不起作用
- Javascript:Can't使用getElementById获取元素
- 如何使用“;getElementById”;在一个循环中
- Javascript GetElementByID has no value
- document.getElementById并使用id名称
- document.getElementById在js中不起作用
- document.getElementById.style.backgroundImage not working
- 如何从document.getElementById()中获取UniqueID
- 从输入框、Javascript、getElementById获取值
- 什么'这个javascript代码getElementById有问题
- DOMDocument getelementbyid conflict?
- 如何从getelementbyid用javascript编写变量
- inline svg--getElementById在Opera中不起作用
- 在init function()中调用getElementById(“..”),而不是想用它做点什么的函数
- 将global.getelementbyid连接到单个变量中
- 未捕获的类型错误:未定义不是上的函数.GetElementByID
- document.getElementById(..) is null