这段代码有什么问题?只有第一个循环实现了

<p id="t1">第一题您选择的是<strong><u id="ss"></u></strong></p>
    <ul id="choose1">
        <li id="a1">哈哈</li>
        <li id="a2">呵呵</li>
        <li id="a3">嘿嘿</li>
        <li id="a4">吼吼</li>
    </ul>
    <p id="t2">第二题您选择的是<strong><u id="cc"></u></strong></p>
    <ul id="choose2">
        <li id="b1">java</li>
        <li id="b2">ios</li>
        <li id="b3">Android</li>
        <li id="b4">php</li>
        <li id="b5">jquery</li>
    </ul>
    window.onload = function(){
    var aLi = document.getElementById('choose1').getElementsByTagName('li');
    var bLi = document.getElementById('choose2').getElementsByTagName('li');    
    for(var i = 0;i<=aLi.length;i++){
        aLi[i].onclick = function(){
            var aTxt = this.innerHTML;
            document.getElementById('ss').innerHTML = aTxt;
        }
    }
    for(var j = 0;j<=bLi.length;j++){
        bLi[j].onclick = function(){
            var bTxt = this.innerHTML;
            document.getElementById('cc').innerHTML = bTxt;
        }
    }   
    }

我想把两道题的选择结果都打印到响应的位置,但每次只能打印上第一题,把第一题注释掉,第二题才可以打印上,是逻辑上 有什么问题么?

<=换成<就正常了。
length获取的是数组长度,但是下标是从0开始的,所以最后一个元素的下标是length-1。因此是<而不是<=

应该是下标越界报错了,然后后面的代码就被阻塞了,2个for循环中的<=改为<

代码有错。

for(var i = 0;i<=aLi.length;i++){

应该改成

for(var i = 0;i<aLi.length;i++){

bLi同理。
以后应该注意这些容易犯的错误~

啊,多了个 =

  • 微信公众号内部的网页如何不通过授权登录直接拿到openId?
  • 哪里有prototype.js源码解读
  • 合理的组件化应该怎么解耦?
  • vue 或者js 怎样给 input type="file" 赋一个初始值
  • 为什么在火狐上可以响应式,而在chrome上无法响应式
  • 新人求教。如何用JS调用API
  • speeddial2,有谁用过这个插件吗?
  • 关于一个css的布局问题
  • 正则表达式,数字带空格,类似于css的边距样式写法?
  • js问题 这样点击怎么无效
  • 关于闭包的一个问题