Else if 语句执行,尽管满足第一个条件

Else if statement executes despite first condition is met

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

代码如下:

  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;
                }

执行时,它总是return满足第二个条件的值(else if),尽管满足第一个条件。如果我删除 else if 语句,那么我将得到正确的 return 值。

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

如果你正确地缩进了你的代码,哪里出错了就会变得相当明显

您的代码缩进了。

    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;

                 }

你的意思可能是如下,请注意"Added missing closing curly bracket"

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;

        }
     }
}

else 语句前的单右大括号应该可以解决问题。

尝试以这种方式执行相同的功能:

if(colvalue1.indexOf("search1")>-1 && colvalue1.indexOf("search2")==-1 ) 
{
  if (rowvalue[j+5] == "")
  {
    rowp = i+1, colp = j+1;
    var itemcode = 9;
  }else{
    rowp = i+1, colp = j+1;               
    var itemcode = 9;
  }
}