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;
}
}
我有一段代码,用于在 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;
}
}