学习笔记——下拉框实现左右联动

先看一下效果图

然后是代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title> new document </title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="generator" content="editplus" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />
  <meta name="description" content="" />
  <style type="text/css">
  </style>

 </head>
  <body>
<select id="select1" onchange="test(this.value);" style="width:100px" ><!--通过onchange设置选定事件-->
<option value="0">--请选择--</option>
<option value="a1">逗比</option>
<option value="a2">大逗比</option>
<option value="a3">小逗比</option>
<option value="a4">逗比逗比</option>
</select>
<select id="select2" style="width:100px" onchange="">

</select>

 </body>
   <script type="text/javascript">
var arr=new Array(4);
arr[0]=["a1","是你1","是你2","是你3","是你4"];
arr[1]=["a2","是你45","是你454","是你6","是你47"];
arr[2]=["a3","是你456","是你6456","是你645","是你78"];
arr[3]=["a4","是你767","是你454","是你786","是你44"];
/*
1.遍历数组,得到第一个元素
2.判断val的值与第一个是否相等
3.相等后,获取数组后面的元素
4.得到select2的id
5.创建子节点option,添加过去appendChild
*/
function test(val){
    var aaa=document.getElementById("select2");
    var bbb=aaa.getElementsByTagName("option");
    for(var m=0;m<bbb.length;m++){
    var op=bbb[m];
    aaa.removeChild(op);
    m--;
    /*由于如果不每次进行删除,那么
      第二个下拉框里的option就会进行叠加,把上一个的元素叠加进去
      因此,每次在第一个下拉框中进行选择后,都要进行判断,把第二个下拉框里存在的option删除;
      同样需要注意m--;以及删除要从父节点开始删除子节点
    */

    }
for(var i=0;i<arr.length;i++)
    {
        var arr1=arr[i];
        var arr11=arr1[0];
        if(val==arr11)
        {
            var aaa=document.getElementById("select2");

            for(var j=1;j<arr1.length;j++){
            var b1=arr1[j];
            var option1=document.createElement("option");
            var text1=document.createTextNode(b1);
            option1.appendChild(text1);
            aaa.appendChild(option1);
            }

        }
    }
}
</script>
</html>

实现这个需要注意的一些都在注释里,另外感觉子节点创建删除这些,需要再看一下

 var aaa=document.getElementById("select2");
    var bbb=aaa.getElementsByTagName("option");
    for(var m=0;m<bbb.length;m++){
    var op=bbb[m];
    aaa.removeChild(op);
    m--;}子节点删除,从父节点入手;然后是在对象里创建标签创建option标签
 var option1=document.createElement("option");创建标签
            var text1=document.createTextNode(b1);创建文本
            option1.appendChild(text1);将文本和标签连接起来
            aaa.appendChild(option1);最后就可以导入到对象里
 
时间: 2024-11-03 22:16:43

学习笔记——下拉框实现左右联动的相关文章

自建List&lt;&gt;绑定ComboBox下拉框实现省市联动

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace _04省市联动 { public partial cl

Ajax来实现下拉框省市区三级联动效果(服务端基于express)

//服务端JS代码: //提供服务端的处理 const express = require('express'); const fs = require('fs'); const app = express(); //载入选择城市的页面 app.get('/',function(req,res){ res.sendFile( __dirname + "/7.city.html" ); }); //获取所有的省份 app.get('/province',function(req,res)

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

selenium自学笔记---下拉框定位元素select

下拉框1.先定位select 然后在定位option city = driver.find_element_by_id("selCities_0") city.find_element_by_xpath("//option[@value='50']").click() 或者 driver.find_element_by_id("selCities_0").find_element_by_xpath("//option[@value='5

下拉框两级联动

//1.首先获取第一级菜单选中的值 第一级菜单id=select1 var val = $("#select1 option:selected").val() //2.如果第一级下拉框的值改变 $("#select1").change(function(){ //3.清楚第二级下拉框的数据 第二级下拉框的id=select2 $("#select2 > option").each(function(){ i++; if(i==1) retu

selectmenu搜索下拉框实现多级联动,演示三级联动

注意的是:修改了作者的源码;但是其他地方用到就得注意了,最好在复制个文件里面改; 缺点:选择后,在选择不会显示默认勾选的样式 // selectmenu.js /** * 控件初始化入口 * @global * @memberof jQuery,bootstrap2,bootstrap3 * @param option {Object} 初始化参数集 */ function Plugin(option) { return this.each(function(){ var $this = $(t

jQuery Ajax实现下拉框无刷新联动

HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); string areaId = ViewBag.areaId; DataRow drArea = areaDal.GetArea(areaId); string countyId = drArea == null ? "-1" : drArea["countyId"].ToSt

C#学习笔记(20140911)-下拉框、日历、pannel控件的使用

晚上学习了下拉框.日历.pannel控件的使用,这几个控件看上去好像没有之前的一些控件那么简单,但是使用起来还是很方便.使用完了后,才发现真的和之前的几种控件差不多. 最了一个小小的模块:每日签到填写心情模块. 主要功能有: 1. 点击日历可以填写签到日期,并在签到内容中自动添加: 2. 可以选择心情,已经写好三种心情供选择.只需要选择一下就可以自动把心情填写到今日心情展示模块中,使用起来很方便. 3. 手动填写心情.手懂填写的时候可以和日期.选择的心情一起自动填写到心情展示区. 4. 历史心情

2016.8.22 Axure两级下拉框联动的实现

刚学Axure,有些很简单的东西都要弄很久,但是弄出来的总归是很开心的. 参考来自:实现省市县下拉框的三级联动 http://www.woshipm.com/rp/348795.html/comment-page-1 我的实现: 1.添加两个droplist,并且为之命名:province和city. 2.为province添加两个选项. 3.将city转换为dynamic panel. 右击city,选择选项“convert to dynamic panel”. 4.为city添加两个状态(与