if ((up_val==(i*""))||(up_val==(i*" ")))
如果upval=0~20个连续""或者0~20个连续" "
那么他就是空的======================
这个写法确实有点变态,第一次看到偶不是高手

解决方案 »

  1.   


    <script>
    String.prototype.Trim = function(){return this.replace(/^\s+|\s+$/g,"");}
    function form_addlanmu()
    {
         var up_val=addlanmu.lanmu.value;
         if (up_val.Trim()=='')
         {
           alert("输入为空,请重新输入!");
           return false;
         }
    }
    }
    </script>
      

  2.   

    qfljm(野猪) 晕,麻烦先看我的问题
    我是问他的结果为什么能正确,而不是问你该怎么判断
      

  3.   

    JScript里面的Scrting类型允许如此操作
      

  4.   

    eglic(圪圪)但是为什么
    alert(4*"s");结果是NaN,而不是ssss呢NaN 属性   语言参考 
    版本 2 
     请参阅                  应用于 
    --------------------------------------------------------------------------------描述
    表示算术表达式返回非数字值的特殊值。
    语法
    number.NaN
    number 参数是Number 对象.说明
    在能够访问 NaN 属性前不必创建 Number 对象。 
    NaN 不与任何值相等,包括其本身。要检测值是否为 NaN,请使用 isNaN 函数。
      

  5.   

    alert(typeof(4*"s"));
    结果是Number型
      

  6.   

    在做减法、乘法、除法时,javascript引擎自动尝试进行Number转换,所以i*""  解析为 i*(Number(""))
    i*" "  解析为 i*(Number(" "))试试看:
       alert(Number(""));
       alert(Number(" "));
      

  7.   

    这个特性同时经常用来做类型转换的简写形式。比如:var s1="123";
    var s2=456;
    alert(s1+s2)
    alert(s1*1+s2)
    alert(s1/1+s2)
    alert(s1-0+s2)
      

  8.   

    <html>
    <head>
    <script>
    function form_addlanmu()
    {
    for(i=1;i<20;i++){
         up_val=addlanmu.lanmu.value;
        if ((eval(up_val)==(i*""))||(eval(up_val)==(i*" ")))
         {
           alert("输入为空,请重新输入!");
           return false;
         }
    }
    }
    </script>
    </head><body topmargin="0" leftmargin="0">
    <form action=lanmu_tianjia.asp method="post" name="addlanmu" >
                <input type=text name=lanmu size="20"> <input type=submit value=添加新栏目 onclick="return form_addlanmu()">&nbsp;
    </form></body></html>
    这样就不行了
    取addlanmu.lanmu.value为字符型而i*""为数值型
    在javascript中
    if (""==0){  }   是成立的