select标签的onchange事件

/*
* @1.onchange事件 ==> select选择事件
* @2.obj.options ==> 选择option集合
* @3.obj.selectedIndex ==> 选择的下标
*/

/*
* @bug
* @1.onchange事件只有在值改变时才可触发,所以必须在每一次选择时(尤其第一次)保证选择的值是改变的!
* @2.连续选相同一项时, 不触发onchange事件
* @3.创建option必须使用 new Option()
* @ add()方法附加到select中第二个参数要设置为undefined兼容
*/

复制代码
// select单个选择
chooseProvince();
function chooseProvince(){
    var obj = document.getElementById("province");
    var sele = obj.options;
    obj.onchange = function(){
        var index = obj.selectedIndex;
        if(index > 0){
            console.log(sele[index].value);
        }
    } 
}
复制代码

 

复制代码
// 城市选择
var datas = [["--选择城市--"],
             ["北京1", "北京2", "北京3"],
             ["天津1", "天津2", "天津3"],
             ["上海1", "上海2", "上海3"]
            ];
chooseProvince()
function chooseProvince(){
    var province = document.getElementById("province");
    var citySel = document.getElementById("city");
    province.onchange = function(){
        var index = province.options.selectedIndex;
        citySel.innerHTML = '';
        if(index > 0){
            citySel.style.display = "block";
            citySel.options.add(new Option(datas[0][0], undefined));
            var citys = datas[index];
            for(var i = 0; i < citys.length; i++){
                citySel.options.add(new Option(citys[i], undefined));
            }
        }else{
            citySel.style.display = "none";
        }
    }

    citySel.onchange = function(){
        if(citySel.selectedIndex > 0){
            console.log("你选择了:" + citySel.options[citySel.selectedIndex].value);
        }
    }
}
复制代码

 

复制代码
<div id="select_box">
    <select id="province">
        <option selected="selected">--选择省市--</option>
        <option value="北京">北京</option>
        <option value="天津">天津</option>
        <option value="上海">上海</option>
    </select>
    <select id="city"></select>
</div>
复制代码

 

posted @   AlanTao  阅读(78877)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示