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))
除赋值外,其余从左向右执行

解决方案 »

  1.   

    v=(v=='show')?'visible':(v=='hide')?'hidden':v;
    等价于
    if(v=='show') {
      v='visible'
    }else if(v=='hide') {
      v ='hidden'
    }
      

  2.   

    xuzuning(唠叨) :
    注意是:(v='hide')而不是:(v=='hide')
      

  3.   

    v='hide'
    不太可能吧!不然我就觉得这是个不合法的表达式了,这里肯定要是一个条件语句再能作出判断呀,可你这是个赋值语句呀!
      

  4.   

    JS里,在需要布尔值的地方,非空非false的,都当作true来看来
    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
      

  5.   

    <!--
    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'
    }
      

  6.   

    如果是:(v='hide')那么这是恒真的式子
    则v='hidden'这不应该是原意
    原意是
    当v是show 令v为visible
    当v是hide 令v为hidden
    否则不变
    只有这样才起到检查的作用
      

  7.   

    这是兄弟我从别人的网页上弄来的代码
    是关于弹出式菜单的方法
    就因为看不懂:(v='hide')这一句才来请教大家的
    http://202.104.219.144/supercrm/mainpage.asp#