学习级联函数的心得

昨天看了某学院讲级联函数的视频,没看明白,在网上找了个级联函数实例来琢麽,是一个省会和城市级联的下拉菜单列表。

html和js如下:

<html> 
    <head> 
    <title>省份与省市级联</title> 
    </head> 
<script language="javascript" src="province.js" type="text/javascript" charset="gb2312"></script>

</script> 
<body onload=‘getProvince()‘> 
<div id=‘province‘><select><option>省份</option></select></div> 
<div id=‘city‘><select><option>城市</option></select></div>

</boydy>

</html>

然后js是这样:

var sity;city=new Array(34);city[0]=new Array(19); 
city[0][0]="北京";city[0][1]="东城";city[0][2]="西城";city[0][3]="宣武";city[0][4]="朝阳";city[0][5]="崇文";city[0][6]="海淀";city[0][7]="丰台";city[0][8]="石景山";city[0][9]="通州";city[0][10]="平谷";city[0][11]="顺义";city[0][12]="怀柔";city[0][13]="密云";city[0][14]="延庆";city[0][15]="昌平";city[0][16]="门头沟";city[0][17]="房山";city[0][18]="大兴";city[1]=new Array(12);city[1][0]="上海";city[1][1]="近郊";city[1][2]="闵行";city[1][3]="浦东";city[1][4]="南汇";city[1][5]="奉贤";city[1][6]="金山";city[1][7]="松江";city[1][8]="青浦";city[1][9]="嘉定";city[1][10]="宝山";city[1][11]="崇明";city[2]=new Array(8);city[2][0]="天津";city[2][1]="塘沽";city[2][2]="汉沽";city[2][3]="宁河";city[2][4]="静海";city[2][5]="武清";city[2][6]="宝坻";city[2][7]="蓟县";city[3]=new Array(1);city[3][0]="重庆";city[4]=new Array(14);city[4][0]="内蒙古";city[4][1]="呼和浩特";city[4][2]="集宁";city[4][3]="包头";city[4][4]="临河";city[4][5]="乌海";city[4][6]="东胜";city[4][7]="海拉尔";city[4][8]="赤峰";city[4][9]="锡林浩特";city[4][10]="太仆寺旗";city[4][11]="通辽";city[4][12]="阿拉善盟";city[4][13]="白城";city[5]=new Array(12);city[5][0]="河北";city[5][1]="石家庄";city[5][2]="衡水";city[5][3]="邢台";city[5][4]="邯郸";city[5][5]="沧州";city[5][6]="唐山";city[5][7]="廊坊";city[5][8]="秦皇岛";city[5][9]="承德";city[5][10]="保定";city[5][11]="张家口";city[6]=new Array(13);city[6][0]="辽宁";city[6][1]="沈阳";city[6][2]="铁岭";city[6][3]="抚顺";city[6][4]="鞍山";city[6][5]="营口";city[6][6]="大连";city[6][7]="本溪";city[6][8]="丹东";city[6][9]="锦州";city[6][10]="朝阳";city[6][11]="阜新";city[6][12]="盘锦";city[7]=new Array(9);city[7][0]="吉林";city[7][1]="长春";city[7][2]="吉林";city[7][3]="延吉";city[7][4]="通化";city[7][5]="梅河口";city[7][6]="四平";city[7][7]="白城";city[7][8]="松原";city[8]=new Array(9);city[8][0]="黑龙江";city[8][1]="哈尔滨";city[8][2]="绥化";city[8][3]="佳木斯";city[8][4]="牡丹江";city[8][5]="齐齐哈尔";city[8][6]="大庆";city[8][7]="北安";city[8][8]="大兴安岭";city[9]=new Array(12);city[9][0]="江苏";city[9][1]="南京";city[9][2]="镇江";city[9][3]="常州";city[9][4]="无锡";city[9][5]="苏州";city[9][6]="徐州";city[9][7]="连云港";city[9][8]="淮阴";city[9][9]="盐城";city[9][10]="扬州";city[9][11]="南通";city[10]=new Array(12);city[10][0]="安徽";city[10][1]="合肥";city[10][2]="淮南";city[10][3]="蚌埠";city[10][4]="宿州";city[10][5]="阜阳";city[10][6]="六安";city[10][7]="巢湖";city[10][8]="滁州";city[10][9]="芜湖";city[10][10]="屯溪";city[10][11]="安庆";city[11]=new Array(14);city[11][0]="山东";city[11][1]="济南";city[11][2]="聊城";city[11][3]="德州";city[11][4]="淄博";city[11][5]="东营";city[11][6]="潍坊";city[11][7]="烟台";city[11][8]="青岛";city[11][9]="泰安";city[11][10]="济宁";city[11][11]="荷泽";city[11][12]="临沂";city[11][13]="枣庄";city[12]=new Array(12);city[12][0]="浙江";city[12][1]="杭州";city[12][2]="绍兴";city[12][3]="湖州";city[12][4]="嘉兴";city[12][5]="宁波";city[12][6]="舟山";city[12][7]="台州";city[12][8]="金华";city[12][9]="丽水";city[12][10]="衢州";city[12][11]="温州";city[13]=new Array(11);city[13][0]="江西";city[13][1]="南昌";city[13][2]="九江";city[13][3]="景德镇";city[13][4]="上饶";city[13][5]="鹰潭";city[13][6]="宜春";city[13][7]="萍乡";city[13][8]="赣州";city[13][9]="吉安";city[13][10]="抚州";city[14]=new Array(10);city[14][0]="福建";city[14][1]="福州";city[14][2]="南平";city[14][3]="邵武";city[14][4]="福安";city[14][5]="厦门";city[14][6]="泉州";city[14][7]="漳州";city[14][8]="龙岩";city[14][9]="三明";city[15]=new Array(14);city[15][0]="湖南";city[15][1]="长沙";city[15][2]="株洲";city[15][3]="益阳";city[15][4]="岳阳";city[15][5]="常德";city[15][6]="吉首";city[15][7]="娄底";city[15][8]="怀化";city[15][9]="衡阳";city[15][10]="邵阳";city[15][11]="郴州";city[15][12]="零陵";city[15][13]="张家界";city[16]=new Array(10);city[16][0]="湖北";city[16][1]="武汉";city[16][2]="沙市";city[16][3]="黄石";city[16][4]="鄂州";city[16][5]="咸宁";city[16][6]="襄樊";city[16][7]="十堰";city[16][8]="宜昌";city[16][9]="恩施";city[17]=new Array(15);city[17][0]="河南";city[17][1]="郑州";city[17][2]="新乡";city[17][3]="安阳";city[17][4]="许昌";city[17][5]="漯河";city[17][6]="驻马店";city[17][7]="信阳";city[17][8]="周口";city[17][9]="平顶山";city[17][10]="洛阳";city[17][11]="三门峡";city[17][12]="南阳";city[17][13]="开封";city[17][14]="商丘";city[18]=new Array(12);city[18][0]="广东";city[18][1]="广州";city[18][2]="韶关";city[18][3]="英德";city[18][4]="梅州";city[18][5]="汕头";city[18][6]="惠州";city[18][7]="深圳";city[18][8]="湛江";city[18][9]="茂名";city[18][10]="肇庆";city[18][11]="佛山";city[19]=new Array(9);city[19][0]="广西";city[19][1]="南宁";city[19][2]="百色";city[19][3]="钦州";city[19][4]="玉林";city[19][5]="桂林";city[19][6]="梧州";city[19][7]="柳州";city[19][8]="河池";city[20]=new Array(8);city[20][0]="贵州";city[20][1]="贵阳";city[20][2]="六盘水";city[20][3]="玉屏";city[20][4]="凯里";city[20][5]="都匀";city[20][6]="安顺";city[20][7]="遵义";city[21]=new Array(16);city[21][0]="四川";city[21][1]="成都";city[21][2]="乐山";city[21][3]="凉山";city[21][4]="渡口";city[21][5]="绵阳";city[21][6]="汶川";city[21][7]="雅安";city[21][8]="甘孜";city[21][9]="广元";city[21][10]="南充";city[21][11]="达州";city[21][12]="内江";city[21][13]="自贡";city[21][14]="宜宾";city[21][15]="泸州";city[22]=new Array(13);city[22][0]="云南";city[22][1]="昆明";city[22][2]="曲靖";city[22][3]="昭通";city[22][4]="开远";city[22][5]="文山";city[22][6]="思茅";city[22][7]="大理";city[22][8]="楚雄";city[22][9]="临沧";city[22][10]="保山";city[22][11]="六盘水";city[22][12]="渡口";city[23]=new Array(11);city[23][0]="陕西";city[23][1]="西安";city[23][2]="渭南";city[23][3]="延安";city[23][4]="绥德";city[23][5]="榆林";city[23][6]="宝鸡";city[23][7]="汉中";city[23][8]="安康";city[23][9]="商洛";city[23][10]="铜川";city[24]=new Array(13);city[24][0]="甘肃";city[24][1]="兰州";city[24][2]="武威";city[24][3]="张掖";city[24][4]="酒泉";city[24][5]="安西";city[24][6]="金昌";city[24][7]="天水";city[24][8]="定西";city[24][9]="平凉";city[24][10]="西峰";city[24][11]="陇西";city[24][12]="甘南";city[25]=new Array(5);city[25][0]="宁夏";city[25][1]="银川";city[25][2]="吴忠";city[25][3]="石咀山";city[25][4]="固原";city[26]=new Array(7);city[26][0]="青海";city[26][1]="西宁";city[26][2]="果洛";city[26][3]="玉树";city[26][4]="格尔木";city[26][5]="海西";city[26][6]="阿坝";city[27]=new Array(11);city[27][0]="新疆";city[27][1]="乌鲁木齐";city[27][2]="石河子";city[27][3]="乌苏";city[27][4]="克拉玛依";city[27][5]="伊宁";city[27][6]="吐鲁番";city[27][7]="哈密";city[27][8]="巴音郭楞";city[27][9]="阿克苏";city[27][10]="喀什";city[28]=new Array(8);city[28][0]="西藏";city[28][1]="拉萨";city[28][2]="那曲";city[28][3]="昌都";city[28][4]="山南";city[28][5]="日喀则";city[28][6]="阿里";city[28][7]="林芝";city[29]=new Array(4);city[29][0]="海南";city[29][1]="海口";city[29][2]="三亚";city[29][3]="海南";city[30]=new Array(12);city[30][0]="山西";city[30][1]="太原";city[30][2]="离石";city[30][3]="忻州";city[30][4]="宁武";city[30][5]="大同";city[30][6]="临汾";city[30][7]="侯马";city[30][8]="运城";city[30][9]="阳泉";city[30][10]="长治";city[30][11]="晋城";city[31]=new Array(17);city[31][0]="台湾";city[31][1]="台北";city[31][2]="台中";city[31][3]="基隆";city[31][4]="台南";city[31][5]="嘉义";city[31][6]="桃园";city[31][7]="苗粟";city[31][8]="屏东";city[31][9]="南投";city[31][10]="花莲";city[31][11]="新竹";city[31][12]="彰化";city[31][13]="高雄";city[31][14]="宜兰";city[31][15]="台东";city[31][16]="彭湖";city[32]=new Array(1);city[32][0]="香港";city[33]=new Array(1);city[33][0]="澳门"; 
    function getRegion() 
    { 
        document.getElementById("city").innerHTML=""; 
        var provinces=document.getElementById("provinces"); 
        var prov=provinces[provinces.selectedIndex].value; 
        var str="<select>"; 
            for(var i=0;i<city[prov].length;i++) 
            {         
                str=str+"<option>"+city[prov][i]+"</option>";     
            } 
            str=str+"</select>"; 
    document.getElementById("city").innerHTML=str; 
    } 
    function getProvince() 
    {

var strs="<select onchange=‘getRegion()‘ id=‘provinces‘><option></option>"; 
        for(var i=0;i<=33;i++) 
        { 
            strs=strs+"<option value="+i+">"+city[i][0]+"</option>"; 
        }     
        strs=strs+"</select>"; 
        document.getElementById(‘province‘).innerHTML=strs; 
    }

我在测试他的脚本之后发现了几个问题

1.html加载完后省会的下拉菜单默认显示是空的,并没有显示“省会”二字,看js文件发现 function getProvince() 里strs应改成<option>省会</option>,这样就有显示了。

2.当你选择其中一个省份后再选择第一栏的“省会”选项时,城市菜单不见了,感觉比较突兀。原因是省份菜单内容改变后“省会”选项成了第一个选项,然而作者并没有给他设置value的值,var prov=provinces[provinces.selectedIndex].value语句找不到对应的值,所以city下拉菜单也就显示不出来了。

3.我认为作者想通过设置和获取value的值来设置下拉菜单过程太麻烦了,书写起来也不方便,光是strs=strs+"<option value="+i+">"+city[i][0]+"</option>"; 这个句子的引号看得我都快要晕了。还有这个var prov=provinces[provinces.selectedIndex].value; 是不是太绕了。

于是乎我就对这个实例进行了个小手术,取消了value属性,眼前清爽了很多。红色部分是我改动过的地方。

function getProvince(){    var strs="<select onchange=‘getRegion()‘ id=‘provinces‘ name=‘provinces‘><option>省会</option>";    for(var i=0;i<=32;i++)    {        strs=strs+"<option >"+city[i][0]+"</option>";    }    strs=strs+"</select>";    document.getElementById(‘province‘).innerHTML=strs;}function getRegion(){    document.getElementById("city").innerHTML = "";    var prov = document.getElementById("provinces").selectedIndex-1;    if (prov == -1)    {        str = "<select  name=‘city‘><option>城市</option></select>"    }    else    {        var str = "<select name=‘city‘>";        for (var i = 0; i < city[prov].length; i++)        {            str = str + "<option>" + city[prov][i] + "</option>";        }        str = str + "</select>";    }    document.getElementById("city").innerHTML = str;}我在function getRegion()中增加了if else条件语句当用户选择”省会“选项时,下面的城市菜单依然存在,不会给用户带来突兀感。用户选择后必然要提交,然后我就在想怎么才能看到提交的内容呢,想必是submit了。可是这两个select都在div里面,信息能提交出去吗,抱着试试看的想法我又对body的内容改了改:
<body ><form action="http://localhost/test1/test.php" method="get"><div id=‘province‘><select><option ></option></select></div><div id=‘city‘><select><option>城市</option></select></div><br><input type="submit" value="提交"></form></body>增加了submit按钮,并且用form把他们一股脑的全装起来指定了method和action,两个select都命名了name,写了个php来接收这两个select。如下:

<?php
header("Content-Type:text/html;charset=gb2312");
echo "省会:".$_GET[‘provinces‘]."<br>";
echo "城市:".$_GET[‘city‘];

试了一下竟然能传递过去,由此看来div并没有影响到submit对两个select的提交,顺便我还学习了下php环境的搭建。

今天的总结就这些吧,我要继续学习正则表达式了。希望我的总结对刚学级联函数的同学有所帮助。

时间: 2024-10-11 09:46:34

学习级联函数的心得的相关文章

第五次作业-系统实现可能需要用到的技术,及学习相关技术的心得

一.系统实现可能需要用到的技术: 我们团队的项目是学生作业管理系统,为了实现这个系统,我们可能需要用到的技术有面向对象编程.UML建模.ASP.NET.C#.SQL server.JQuery 等. (1)面向对象程序设计(Object-Oriented Programming)是一种起源于六十年代,发展已经将近三十年的程序设计思想.对象是对现实世界实体的模拟,由现实实体的过程或信息来定义.一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的

学习韦东山视频心得(一)

学习韦东山视频心得(一) 任何计算机系统都是软件和硬件的结合体,如果只有硬件而没有软件,则硬件是没有灵魂的躯壳:如果只有软件没有硬件,则软件就是一堆无用的字符.在底层硬件的基础上,操作系统覆盖一层驱动,屏蔽底层硬件的操作,通过特定的软件接口去操作底层硬件,用户在用户空间可以很容易的把软件设计目标放在策略与需求上,可以很方便的屏蔽掉底层实现,从而很好的完成客户功能需求.计算机系统是软件和硬件的结合体.而软件又分为应用层软件和驱动层软件.驱动层软件是应用层软件和底层硬件的纽带.通过驱动层软件实现对底

学习韦东山视频心得(二)

学习韦东山视频心得(二) 1.字符设备驱动 图2.6 LCD驱动框架 图2.7 LCD硬件框架 字符设备是Linux设备中最基本的设备驱动是其他大型驱动的基石.字符设 备驱动模型,如下图2.8所示. Linux内核驱动模块一般由模块加载函数,模块卸载函数,模块许可申明等等组成.在字符设备驱动中在模块加载函数中注册主设备,注册操作方法,创建设备结点等操作.字符设备驱动移植步骤: (1)在模块加载函数中创建设备文件,注册主设备号,注册操作方法 (2)分别实现各自操作方法 Linux内核驱动模块一般由

学习韦东山视频心得(三)

学习韦东山视频心得(三) I2C总线广泛的用于各种传感器中,仅仅通过SDA,SCL线实现了主机与设备之间的通信.Linux系统中I2C驱动较为庞大.Linux系统中可以采用两种方式实现I2C设备驱动,我们既可以把I2C设备当做普通的字符设备去操作,同时可以利用内核中庞大而错综复杂的框架.如果当做普通的字符设备,程序员只要把管脚模拟时序或者I2C控制器自己实现不采用内核框架,使得程序员不需去研究I2C设备驱动庞大的框架,但是,如此写出来的驱动移植性跟单片机相差无几,移植性能很差,优点是比较直截了当

Lua学习(4)——函数

在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}.    Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符.表达式o.foo(o,x)的另一种写法是o:foo(x).冒号操作符使调用o.foo时将o隐含的作

级联函数

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script> /*级联函数重点在于 把当前原型对象指针返回, 即可调用其他方法*/ function person() { this._lian = ""; this._zui = ""; this._tui = "

学习软件工程课的心得上

一开始看到软件工程的课本的时候,我看了一下,书名为<软件工程--理论.方法与实践>,我本来以为这将会是大三这一学期相对轻松的课程. 没有想到,第一节课,老师的PPT上对软件工程课的吐槽让我惊呆了,我想,到底该怎么办啊?是不是这一学期会被这门课给烦死给累死啊.然后不出所料的,不久之后老师就布置了第一个编程的作业,其实我的编程特别的差劲,但是既然布置了作业,没有办法,只能硬着头皮做下去,其实不得不承认,当时心里其实是有一些怨念的,但是没有别的法子,只能上网搜,然后一点点的看,查,最后终于弄懂了算法

MySQL基础学习之函数

数学函数 绝对值      abs() 圆周率      PI() 平方根 sqrt() 模除取余   mod(被除数,除数) 随机数      rand() 四舍五入    round(数字) 次方         pow(5,2) e为底的指数函数  exp(数字) 字符串函数 字符长度       length(字符) 字符连接       concat(字符1,字符2) 带符号的字符连接    concat_ws('-','su','zhou') 字符插入      insert('su

js function定义函数使用心得

js function定义函数使用心得,了解这个才能更进一步的了解js面向对象方面的知识. 1.最基本的作为一个本本分分的函数声明使用. 代码如下: function func(){} 或 var func=function(){}; 2.作为一个类构造器使用: 代码如下: function class(){} class.prototype={}; var item=new class(); 3.作为闭包使用: 代码如下: (function(){ //独立作用域 })(); 4.可以作为选择