onchange事件怎么触发不了呀?

<!DOCTYPE html>
<html lang="en">

<head>

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>

</head>

<body>

<!-- 省 -->
<select id="selID">  
        <option>--选择省市--</option>  
        <option>北京</option>  
        <option>山东</option>  
        <option>湖南</option>  
        <option>广东</option>  
    </select>

<!-- 市 -->
<select id="subID">  
        <option>--选择城市--</option>  
    </select>

<script type="text/javascript">
    var arr = [
        ["--选择城市--"],
        ["海定区", "东城区", "西城区", "朝阳区"],
        ["济南", "青岛", "日照", "威海"],
        ["长沙", "郴州", "岳阳", "株洲"],
        ["广州", "深圳", "惠州", "东莞"]
    ];
    var selID = document.getElementById("selID");
    var index = document.getElementById("selID").selectedIndex;
    var subNode = document.getElementById("subID");
    // 获取数组红指定的数据
    var citys = arr[index];
    selID.onchange = function() {
        subNode.options.length = 0;
        for (var x = 0; x < citys.length; x++) {
            var optNode = document.createElement("option");
            optNode.innerText = citys[x];
            subNode.appendChild(optNode);
        }

    }
</script>

</body>

</html>

阅读 4.7k
4 个回答

index = document.getElementById("selID").selectedIndex;
citys = arr[index];
把这两句放到onchange事件里面开头去,重新赋值。不然index的值一直都是0

在页面onload中注册事件监听

新手上路,请多包涵
    selID.onchange = function() {
        subNode.options.length = 0;
        index = this.selectedIndex;
        citys = arr[index];
        for (var x = 0; x < citys.length; x++) {
            var optNode = document.createElement("option");
            optNode.innerText = citys[x];
            subNode.appendChild(optNode);
        }
    }

你的index 一直没有变化, 所以city也一直没变,你只需要把indexcitys移到onchange内就可以了。

`var arr = [

    ["--选择城市--"],
    ["海定区", "东城区", "西城区", "朝阳区"],
    ["济南", "青岛", "日照", "威海"],
    ["长沙", "郴州", "岳阳", "株洲"],
    ["广州", "深圳", "惠州", "东莞"]
];
var selID = document.getElementById("selID");

var subNode = document.getElementById("subID");
// 获取数组红指定的数据
selID.onchange = function() {
    subNode.options.length = 0;
    var index = document.getElementById("selID").selectedIndex;
    var citys = arr[index];
    
    for (var x = 0; x < citys.length; x++) {
        var optNode = document.createElement("option");
        optNode.innerText = citys[x];
        subNode.appendChild(optNode);
    }

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