如何在循环中创建元素并将其添加到DOM中
How to create and add elements to the DOM in a loop
我想把num
数量的img
元素附加到DOM中,并根据它是哪个num
给每个图像一个id
。我知道我需要一个循环,所以这就是我目前所拥有的:
window.onload = function makeImage(){
for(i=0;i<num;i++){
document.getElementById('test').innerHTML="<img id='i' src='img/image.jpg'/>";
}
};
<div id="test"></div>
以下是一些应该对您有所帮助的代码片段和注释。如果您有id='i'
,那么看起来您想要的是:'<img id="'+i+'"'
。您在JavaScript中使用+
符号进行连接,因此用引号关闭字符串,然后进行连接,然后再次打开字符串。把它分解成几个步骤更容易学习。这是一个没有值的字符串:'<img id=""'
然后,你需要在双引号之间,用单引号关闭和打开字符串,并连接i
,这样:'+i+'
。总共,您得到'<img id="'+i+'"'
var num = 2;
// addEventListener is better practice than onload
window.addEventListener('load', function() {
// get the element reference before the loop (no need to repeat this)
var testElem = document.getElementById('test');
for(i = 0; i < num; i++) {
// create an img element, this is better practice than using innerHTML
var img = document.createElement('img');
img.src = "//placehold.it/100x100";
img.id = 'image'+i;
testElem.appendChild(img);
}
});
<div id="test"></div>
您也可以像下面的例子一样通过连接新图像来使用innerHTML
,但这有缺点。点击此处阅读更多关于createElement与innerHTML的信息。
var num = 2;
window.addEventListener('load', function() {
var testElem = document.getElementById('test');
for(i = 0; i < num; i++) {
testElem.innerHTML+= '<img id="image'+i+'"src="//placehold.it/100x100">';
}
});
<div id="test"></div>
这里的问题是您没有在循环中附加图像,旧图像只会被新图像覆盖。由于您使用的是=
运算符。
document.getElementById('test').innerHTML="<img id='i' src='img/image.jpg'/>";
-----------------------------------------^
使用+=
,还需要连接i
值以获得图像唯一ID:
var html = "";
var num = 3
for (var i = 1; num >= i; i++) {
html += '<img src="http://www.tatwellness.com/store/image/cache/data/homewelcome/no%20image-200x200.png" id="img' + i + '"/>';
}
document.getElementById('test').innerHTML = html;
img {
border: 1px solid grey;
margin: 5px;
}
<div id="test"></div>
相关文章:
- 如何判断何时将dom节点添加到文档中
- 向动态生成的DOM添加Angular自定义指令
- 如果移除并重新添加DOM元素,则ng单击绑定丢失
- 使用 Knockout 动态添加 dom 元素
- jquery使用$.on来添加dom元素
- 如何在 HTML 结构中添加 DOM 模型
- 如何强制.prepend()和.append()添加DOM对象,而不是文本
- AngularJS添加DOM元素
- 添加DOM视图太慢了,需要一种更好的方法来缓存一次视图并重用它供以后使用
- 带有模板的Dojo小部件,在小部件加载时更改模板(添加DOM元素)
- 添加 DOM 元素,什么是正确的方法
- 如何在画布上添加DOM对象
- 如何在每次迭代中添加DOM对象
- jQuery show()不是一个函数-用于添加DOM元素
- 只能添加dom元素,但不能删除它们
- 在单击按钮时动态添加DOM元素
- 添加 DOM 元素时获取通知
- 如何在React中添加dom
- 如何在Div背景中添加DOM图像对象
- 如何在按钮中添加DOM附加的功能