<style>
*{margin:0;padding:0;}
li{list-style:none;}
#div1{width:350px;height:60px;border:1px #000000 solid;position:relative;margin:0 auto;}
#div1 ul{position:absolute;left:0;}
#div1 ul li{width:80px;height:60px;margin-right:7px;float:left;background:blue;color:#fff;font-size:15px;font-weight:bold;text-align:center;line-height:60px;}
</style>
<script type="text/javascript">
window.onload=function(){
var oInput=document.getElementById("input1");
var oUl=document.getElementById("ul1");
var aLi=oUl.getElementsByTagName('li');
var oneSize=aLi[0].offsetWidth+7;
var iNum=4;
var bBtn=true;
function getWidth(){
oUl.style.width=aLi.length*oneSize+'px';
}
getWidth();
oInput.onclick=function(){
if(bBtn){
bBtn=false;
for(var i=0;i<iNum;i++){
var oLi=aLi[i].cloneNode(true);
oUl.appendChild(oLi);
getWidth();
}
for(var i=0;i<iNum;i++){//如果把这个iNum给换成aLi.length后他移除的是一组(1,2,3,4,5)而不是一个,这是怎么回事,变量和读出来的长度有什么区别
oUl.removeChild(aLi[0]);
oUl.style.left=0;
}
bBtn=true;
}
}
}
</script>
</head>
<body>
<input type="button" value="切换" id="input1"/>
<div id="div1">
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
</body>
</html>
aLi是一个动态变化的值,虽然 var aLi=oUl.getElementsByTagName('li');
你新增li到ul,或者你delete li 都会立即的反应出来,这样如果你用aLi.length,这个值也是一个动态变化的值。
这样,应该可以解决掉你的疑问。
for(var i=0;i<aLi.length;i++){//如果把这个iNum给换成aLi.length后他移除的是一组(1,2,3,4,5)而不是一个,这是怎么回事,变量和读出来的长度有什么区别
alert(i);
i在增大,aLi.length在不断的减小
我onclick他就会先新增4个li就等于有9个li了 结果【1,2,3,4,5,1,2,3,4】 现在我用for(var i=0;i<ali.length;i++){ removeChild(ali[0]); } 按道理他会找到第一个ali的值吧 我想的结果【2,3,4,5,1,2,3,4】 但结果是【1.2.3.4】 上面这就是我的想法 你说的用ali.length这个值会动态变化,你说的这个值是不是还是那一组呢? 怎么看到细节的变化
楼上正解,
你同时试试alert(i);alert(aLi.length);alert(iNum);这几个,然后把循环条件i<aLi.length与i<iNum,慢慢试就会发现问题了.