关于无缝滚动的问题

<script type="text/javascript">
    window.onload=function(){
        var oDiv= document.getElementById('div1');
        var aUl= oDiv.getElementsByTagName('ul')[0];//第4行
        var aLi= aUl.getElementsByTagName('li');
        aUl.innerHTML=aUl.innerHTML+aUl.innerHTML;
        aUl.style.width=aLi[0].offsetWidth*aLi.length+'px';
        setInterval(function(){
            aUl.style.left=aUl.offsetLeft-2+'px';//第9行
        },30)
    }
</script>

请问大神:第4行的写法不是提取这个数组的第一个元素么?那么我把第4行的"[0]"去掉,再在第9行的aUl后面加上"[0]",为什么不行呢?

阅读 1.8k
3 个回答

你把第四行的[0]去掉之后,第五行就获取不到li元素,那接下来的代码都不成立了

第4行去掉[0]的话,那么除了第9行外,第5、6、7行都需要加[0]了,否则会有错误的

所有.getElementsBy~接口获取到的都是个实时的DOM元素集合,可以用在尾巴上加[0]这种方式来访问集合内的元素,也可以用.item(0),两种方式是等效的;而如果“Elements”后边没有带“s”呢,获取的就是(实时)DOM元素了。
另外其他几位也说了,后边几句依赖这句获取到的DOM元素,所以不管是[0]还是.item(0),你总得带上一个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题