[英]How to create and add elements to the DOM in a loop
我想附加num
的量img
元素到DOM,并为每个图像的id
,根据该num
它。 我知道我需要一个循环,所以这是我到目前为止的内容:
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.