否则if语句执行尽管满足第一个条件

时间:2015-10-07 20:49:32

标签: google-apps-script google-spreadsheet-api

我有一段代码,用于在工作表中执行搜索,然后在找到时分配变量。

以下是代码:

  for(i=0;i<values.length; i++)
      {
        rowvalue = values[i];        
        for (j=l=1;j<rowvalue.length; j++) {
             colvalue = rowvalue[j];             
             colvalue1 = colvalue.toString();             
             if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1
                && rowvalue[j+5] == "") {
                rowp = i+1, colp = j+1;               
                var itemcode = 9;
      }
    else if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1) {
                rowp = i+1, colp = j+1;               
                var itemcode = 9;
                }

执行时,它将始终返回满足第二个条件的值(否则为),尽管满足第一个条件。如果我删除else if语句,那么我将得到正确的返回值。

据我所知,一旦if语句得到满足,它应该跳过其他地方,否则就是。但出于某种原因,情况并非如此。我不确定我是否正确使用该功能,或者我对该功能的工作方式有误解。

2 个答案:

答案 0 :(得分:1)

如果你正确地缩进你的代码,它就会变得非常明显

您的代码缩进。

    for(i=0;i<values.length; i++)
    {
        rowvalue = values[i];        
        for (j=l=1;j<rowvalue.length; j++) 
        {
            colvalue = rowvalue[j];             
            colvalue1 = colvalue.toString();             
            if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1 && rowvalue[j+5] == "") 
            {
                 rowp = i+1, colp = j+1;
                 var itemcode = 9;
                 else if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1) 
                 {
                     rowp = i+1, colp = j+1;               
                     var itemcode = 9;

                 }

您可能意味着如下所示,请注意“添加缺少的结束花括号”

for(i=0;i<values.length; i++)
{
    rowvalue = values[i];        
    for (j=l=1;j<rowvalue.length; j++) 
    {
        colvalue = rowvalue[j];             
        colvalue1 = colvalue.toString();             
        if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1 && rowvalue[j+5] == "") 
        {
             rowp = i+1, colp = j+1;
             var itemcode = 9;
        } // Added missing closing curly bracket
        else if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1) 
        {
            rowp = i+1, colp = j+1;               
            var itemcode = 9;

        }
     }
}

答案 1 :(得分:0)

在else语句之前单个结束大括号应该解决问题。