JS加一个分支 实现

JavaScript08

JS加一个分支 实现,第1张

很抱歉,非让我来看一下.呵呵

我把你的程序全盘否定了!我来告诉你一下思路:

有两种方法实现二级联动的.

一种是ajax实现的无间断刷新技术.它的方法是这样的,当你选一个下拉列表框时可以触发onchange事件,这个事件得到具体的值后可以用js向服务器请求信息,将返回的信息再二级联动到下一下拉列表框中.但这种情况是一个页面可能向服务器有多次请求,如果是租用服务器时还好说,如果是买人的空间,有一个IIS链接数的限制,如果你网站流量大时会吃一点亏的.但ajax涉及的内容较多,一般很难一时半会掌握的.

这时可以采用刷新的办法.我假定一个例子你可能更好理解些.比如一个地址选框,第一个选省份,第二个选地区,当然可能有第三个.其他多少级不是问题.

首先当然是对初始化第一个选框(下拉列表框),不管选定哪一个,都对onchange事件进行处理,而这个事件没有任何其他的必要,只管重新请求一次就可以了,但你别忘记了你的第一个下拉列表框中已经有值的,这个值向传向服务器的,而这次可以进行接收,是首次请求还是是由用户的onchange事件的请求?他们的区别是一个接到的不是预定的值而已,这时可以加一个判断去区别一下的.如select name="se1"可以这程序的一开始去接收form中的sel的值,当然,你呆能接不到值,这是因为是首次请求,或者说非sel的select之onchange事件而来的,所以若接不到,(可以程序健壮性,接到错值时也中以处理一下),则在全表中搜索然后给sel进行初始化.若接到则到第二个表中进行单独的寻找,条件当然是属于接到的值,两表的关系也是1对多的.这里,不再对第一个进行任何的处理,只要让其等于接到的值,而再初始化第二个表就可以了.这显然是一个分支判断.而你根本就没有看到你的分支,所以是你错了!有第三个时也样处理.

可然,这种方法都是有利有不利的,一个是技术上有点难,一个是对客房户的体验不好.可以着情选择.

根据经验,我再来说一种技巧吧,比如是一个二级联致动或是三级联动,你可以在服务端生成一个js语句,这个语句的作用就是将所有的内容都装入到js中来,当然,这都是要下行到客户端的,有一个明显的特征就是,JS中支持二维及二维以上的数组,而数据与表格的关系我想不用再说了吧?呵呵,这样向客户端发送的只有一个请求的,而将所有数据全部发到客户端进行处理了,显然,这是一种一次数据交换的方法,只要一次请求就可以了!但不利的地方就是增加了客户机压力,网络压力,保适小数据的传送!代码来个例子吧:

<%

sql = "select sheng,diqu,xiang from pro,diqu,jidan where pro.id = di.pid and diqu.id = jidan.sid"

'显然最值进行循环就不写了

do while not rs.eof

response.write "pa[i]=new Array('"&rs("sheng")&"','"&rs("diqu")&"','"&rs("xiang")&"')"

.....

loop%>

当然外层上还有对pa进行定义的,这种方案只是用一个二维数组运河表示三个表而已.

而这客户端的使用中可以这样考虑,

for (i=0i<pa.lengthi++)

if (pa[i][0]=="北京"){

'用pa[i][1]去写第二个下拉列表框

}

但这里只是一个简单的说明,第一,这个代码要发生在第一个select的onchange事件中.第二,必须相办法去掉去复的值!因为这个会出现大量的一级重复的!如果是三级时,二级也会重复.这也是一种经验.但客户端的压力很大的.

所以还不如对其进行改进一下:

第一个表中内容存在pa数组中.第二个表中的一些内容存在pb中,当然如果有第三样同样处理的.但这种情况下,pb本身也是一个数组的,三级时使用pc数组,它存在同样是数据的.所以有人干脆对数据进行重封装,使用了JSON方式,本来这是ajax使用的一个数组封装形式.我这样一个例子吧:

pa = {河南{郑州{金水区,二七区,...},开封{明湖区,天苑区,....},....},河北{石家庄{....},....},.....}

呵呵,能看懂这种形式吗?这就是JSON的封装形式,很好使用的.但不管是数组的哪种封装还是JSON都不建议采用的,除非数据量小!所以最常用的还是上边的两种.

而你就是搞乱了什么是服务器什么是客户机的.

至于你不懂的那句,我也用过了,其实就是一个二级数组而已.

相信你能看明白!可惜我没有时间帮你写代码的!

v-for=" 循环

v-model='' 双向绑定,用于表单元素

v-on:事件名='函数名 绑定一个事件,简写@click=''

v-bing:属性名='' 绑定一个属性,简写 :属性名='值'

v-show='' 控制元素的显示或隐藏 dsiplay:none

v-if='' 控制元素的显示或隐藏 visibility:hidden

v-else

v-else-if

&&与 ,有假与为假

|| 或 ,有真或为真

! 非 ,取反

if(条件){

//1

}else{

//2

}

if(条件1){

//1

}else if(条件2){

//2

}else 你发(条件3){

//3

}else{

}

var num=123.456;

console.log(num.toFixed(2));四舍五入

console.log(Math.random()*1000.toFixed(0))

JavaScript 与Java是两个公司开发的不同的两个产品。Java 是原Sun Microsystems公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言。JavaScript的前身是LiveScript而Java的前身是Oak语言。

下面对两种语言间的异同作如下比较:

基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和事件驱动(Event-Driven)的编程语言,因而它本身提供了非常丰富的内部对象供设计人员使用。

解释和编译:Java的源代码在执行之前,必须经过编译。JavaScript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。(目前的浏览器几乎都使用了JIT(即时编译)技术来提升JavaScript的运行效率)

强类型变量和类型弱变量:Java采用强类型变量检查,即所有变量在编译之前必须作声明JavaScript中变量是弱类型的,甚至在使用变量前可以不作声明,JavaScript的解释器在运行时检查推断其数据类型。

代码格式不一样。

补充:上面列出的四点是网上流传的所谓的标准答案。其实Java和JavaScript最重要的区别是一个是静态语言,一个是动态语言。目前的编程语言的发展趋势是函数式语言和动态语言。在Java中类(class)是一等公民,而JavaScript中函数(function)是一等公民,因此JavaScript支持函数式编程,可以使用Lambda函数和闭包(closure),当然Java 8也开始支持函数式编程,提供了对Lambda表达式以及函数式接口的支持。对于这类问题,在面试的时候最好还是用自己的语言回答会更加靠谱,不要背网上所谓的标准答案。