该函数使用该slice()方法在动态创建的div中单击时显示八个元素。我怎样才能给每个人一个唯一的身份证div?你的建议对我很有帮助。var words = [40];var count = 0;var x = "";function nextElems() {
var newArray = words.slice(count, count + 8);
for (i = 0; i < newArray.length; i++) {
x += '<div class=box>' + newArray[i] + '</div>';
document.getElementById('container').innerHTML = x;
}
x = "";
count += 8;}我试过这个,但它不起作用:var mainDiv = document.getElementById('container');var first = mainDiv.getElementsByTagName('div')[0];first.id = 'one';
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
您可以使用在文本字符串中指定ID。
以下是您可以采取的其他一些措施来改进此代码:
将getElementById移到循环外部
使用js方法而不是字符串连接
像这样(未经测试):
// get the containercontainer = document.getElementById('container');for (i = 0; i < newArray.length; i++){
// create a div
var div = document.createElement('div');
// add attributes
div.setAttribute("id", "box-" + i);
div.setAttribute("class", "box");
// create text node
var textnode = document.createTextNode("This is div #" + i);
// add text to div
div.appendChild(textnode);
// append to container
container.appendChild(div); }
德玛西亚99
TA贡献1770条经验 获得超3个赞
你可以在for循环中直接进行迭代:
for (i = 0; i < newArray.length; i++){
x += '<div id="box-' + i + '"> class="box">' + newArray[i] + '</div>';
document.getElementById('container').innerHTML = x;}
慕哥9229398
TA贡献1877条经验 获得超6个赞
如何在创建时赋予它id?也把这样class=box的引号放在- > class="box"。
并且在for循环之后只添加整个div构造一次。因为现在你基本上多次覆盖整个事情。
var words = [40];var count = 0;var x = "";function nextElems() {
var newArray = words.slice(count, count + 8);
for (i = 0; i < newArray.length; i++)
{
// Change class and add custom id
x += '<div class="box" id="box-'+i+'">' + newArray[i] + '</div>';
}
document.getElementById('container').innerHTML = x; // Add divs after for loop
x = "";
count += 8;}现在每个框都有一个唯一的id,从box-0,box-1,...到box-n
添加回答
举报
0/150
提交
取消
