关于javascript联动菜单

书上的一个javascript练习题,用javascript实现一个联动菜单,for循环的位置,我是照着书上打的,但是仍旧提示有问题,求大神解答!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <select name="" id="prov" onclick="ch();">
        <option value="-1">请选择</option>
        <option value="0">北京</option>
        <option value="1">湖北</option>
    </select>
    <select name="" id="city"></select>
</body>
<script>

var area = [
     ["海淀","朝阳","通州"],
     ["武汉","鄂州","黄冈"]
];

    function ch () {
        var ab = document.getElementById('prov');

        var opt = ' ';
        
        for(var i=0,len=area[ab.value].length;i<len;i++){
            
            opt=opt + '<option value=" '+ i +' ">'+area[ab.value][i]+'</option>'; 
        }
        console.log(opt);
    }

</script>
</html>
阅读 3.2k
2 个回答

你应该先自己读一下书上的代码,理解这段代码的作用。

你看上面的代码,是根据选择的选项,来获取相应的区域,但是没有给html赋值,所以页面上没有变化。

你说的报错 是因为你绑定的事件是onclick,当点击的时候就会去取ab.value,但是这个时候拿到的肯定是-1,所以下面的循环才会报错,加个判断就行了,或者换事件。
不显示,是因为你并没有把opt放进city节点里面

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