首先,!是取反的意思
if(v)中,如果v是一个具体的值(不是null、undefined、""、''等这些),那if(v)返回的就是true,if(!v)返回的是false。
相对于的。由于!是取反的意思。那当if(v)中的v不是一个具体的值时(是null、undefined、""、''等这些),那if(v)返回的是false。f(!v)返回的就是true。
所以,你这句:if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v)的意思就是:
如果v存在,并且id为s[v-1]的下拉框所选择的选择项大于0并且v取反也存在,那条件就成立
你这if语句就就写错了。v和!v是相反的,就好比true和false
if(v)// 判断的是:v是否为0,在js中0和false可以相互等同,0==false, 就是true;
这句话的意思是:
如果v大于0,这样就保证了s[v-1]不越界;
后面或者|| !v,就是v等于0
0 等同与false,非0等同与true,你的if语句可以这样写
if((v !=0 && document.getElementById(s[v-1]).selectedIndex > 0) || v == 0)