function a(v)
{alert(v)
return(v=='show');}var v;
alert(v=(a(v))?'visible':(v='hide')?'hidden':v);/*
由此可见v=(v=='show')?'visible':(v='hide')?'hidden':v的执行运程为:
v=((v=='show')?'visible':((v='hide')?'hidden':v))
除赋值外,其余从左向右执行
{alert(v)
return(v=='show');}var v;
alert(v=(a(v))?'visible':(v='hide')?'hidden':v);/*
由此可见v=(v=='show')?'visible':(v='hide')?'hidden':v的执行运程为:
v=((v=='show')?'visible':((v='hide')?'hidden':v))
除赋值外,其余从左向右执行
等价于
if(v=='show') {
v='visible'
}else if(v=='hide') {
v ='hidden'
}
注意是:(v='hide')而不是:(v=='hide')
不太可能吧!不然我就觉得这是个不合法的表达式了,这里肯定要是一个条件语句再能作出判断呀,可你这是个赋值语句呀!
alert(v='hide')
我们可以看到,赋值语句的返回结果就是所赋的值,在本例里非空,当作true来处理。
另外,通过JK的第一次回复的程序可以看到
v=(v=='show')?'visible':(v='hide')?'hidden':v的执行运程为:
v=((v=='show')?'visible':((v='hide')?'hidden':v))
如果当第一个v=='show'不成立,则((v='hide')?'hidden':v)会执行,并且执行结果一定是对v赋值,并且返回hidden
function test(v)
{
v=(v=='show')?'visible':(v='hide')?'hidden':v;alert(v);
}<form name="theForm">
<input name="model" type="text" onBlur="javascript:test(this.value)"></form>在文本输入框中输入"show","hide",还有其它的值,可以得出结果是:只有当输入为show时,v的值才为'visible',否则都为‘hidden’
这个语句等价于:
if(v=='show') {
v='visible'
}else {
v ='hidden'
}
则v='hidden'这不应该是原意
原意是
当v是show 令v为visible
当v是hide 令v为hidden
否则不变
只有这样才起到检查的作用
是关于弹出式菜单的方法
就因为看不懂:(v='hide')这一句才来请教大家的
http://202.104.219.144/supercrm/mainpage.asp#