js中定义赋值的问题

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>

<style type="text/css">
div
{
width: 50px;
height: 50px;
background: red;
position: absolute;
top:0;
left: 0;
font-size: 30px;
text-align: center;
line-height: 50px;
color: #fff;
}
</style>

<script>

window.onload = function  () {
var aDiv = document.getElementsByTagName('div');
var str ='';

//批量创建div
for (var i = 0; i < 31; i++) {
str +='<div>'+i+'</div>';
alert(str);
};
//alert(str);
//坐标设置
for (var i = 0; i < aDiv.length; i++) {
//间隔10px同行排列
aDiv[i].style.left = 10+i*60 + 'px';

//逢10个换行
for (j=1;i>=10*j;j++) {
aDiv[i].style.top = j*60+'px';
aDiv[i].style.left = 10+(i-j*10)*60 + 'px';
} ;


//阶梯状排列
//aDiv[i].style.left = 10+i*50 + 'px';
//aDiv[i].style.top = 10+i*50 + 'px';


//“V”字型排列
//aDiv[i].style.left = 10+i*50 + 'px';
//if (i<aDiv.length/2) {
//    aDiv[i].style.top = 10+i*50 + 'px';
//} else{
// aDiv[i].style.top = 10+(aDiv.length-1-i)*50 + 'px';
//};
};
document.body.innerHTML = str;
}
</script>
</head>
<body>

</body>
</html>

为什么我只要定义了str ,就只能出最后一个div方块;如果直接用document.body.innerHTML 就能出现正确的效果。

还有给div数组的长度定义 len,也会出问题。是哪里有冲突吗?视频里也没有做其他设置呀。

qq_電波_03505597
浏览 1536回答 2
2回答

nickylau82

你这个问题有点多。。先不说没必要加分号的地方加分号了。再说说逻辑:aDiv说从DOM数中按照TagName去获取的,但是这个时候DOM上并没有div,是不可能取到的。。由于aDiv是空,因此你后面两个给div设置属性的两个循环根本就没有走进去其实页面上是有30个div的,只不过因为position:absolute,所以都重叠在一起了。你可以在浏览器上按F12来跟踪查看的。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript