function mainLoop()
{
 val = escape( queryField.value );
 if( lastVal != val )
   {
     var reg  = /[^\u4E00-\u9FA5]/g;
     if(reg.test(val.value))
      {
         var response = AjaxMethod.GetSearchItems( val,1 );
              
       }
       else
        {
         var response = AjaxMethod.GetSearchItems( val,0 );
        }
         showQueryDiv( response.value );
        lastVal = val;
     }
            return true;
}
相信这段代码大家比较熟悉是给输入框增加智能提示的其中一小段。 。没改之前智能提示英文很正常。我该后根据用户输入的是汉字执行var response = AjaxMethod.GetSearchItems( val,1 ); 否则执行var response = AjaxMethod.GetSearchItems( val,0 );程序没错 现在输入汉字或英文却显示不全或没有显示 。请大家帮我看看 问题出在哪里?谢谢了

解决方案 »

  1.   

    问题出在这里:
    if(reg.test(val.value))
          {
             var response = AjaxMethod.GetSearchItems( val,1 );
                  
           }
           else
            {
             var response = AjaxMethod.GetSearchItems( val,0 );
            }
             showQueryDiv( response.value );
            lastVal = val;
         }
    var response是在if/else块中定义的,出了块之后就不存在了,在showQueryDiv(response.value)的时候response.value是null
      

  2.   

    把response变量定义到if语句外面试试.
      

  3.   

    和变量定义的地方没关系, 后面是可以访问response变量的。
      

  4.   

    var reg  = /[^\u4E00-\u9FA5]/g;
    这个是检查是否存在非汉字吧,LZ改成这样试试
    var reg  = /[\u4E00-\u9FA5]/g;
      

  5.   

    说的是 javascript没有块作用域 
      

  6.   

    /[^\u4E00-\u9FA5]/g,该正则只能判断字符串中是否含有非中文字符。
    若判断是否含有中文字符应用/[\u4E00-\u9FA5]/g,若是判断是否全是中文字符应用/^[\u4E00-\u9FA5]+$/g