检查所有值是否正确循环

问题描述 投票:0回答:3

我想为检查表创建一个循环。

如果Col3中的一个包含“no”变量,则将填充“no”

如果Col3的所有值= yes,则变量a将返回值yes

Col1  depend  isResolved
im1    SD10349    yes
im2    SD10349    no
im3    SD10349    yes

我的代码如下

var frel = new SCFile("screlation");
var q = "depend=\"SD10349\"";
var rc = frel.doSelect(q);
var a="";
while(rc==RC_SUCCESS){
    switch(true){
        case frel.isResolved=="yes":
            a="yes";break;
        case frel.isResolved=="no":
            a="no";break;
    }
    rc=frel.getNext();
}
print(a);

但变量a总是返回yes。感谢任何帮助:)

此致,Okik

javascript loops while-loop
3个回答
2
投票

这应该这样做:

  var frel = new SCFile("screlation");
    var q = "depend=\"SD10349\"";
    var rc = frel.doSelect(q);
    var a="";
    while(rc==RC_SUCCESS){
        a = (frel.isResolved=="yes")?"yes":"no"
        if(a=="no")break;
        rc=frel.getNext();
    }
    print(a);
    }

2
投票

switch语句中,switch具有表达式参数,而不是表达式的可能输出。

尝试颠倒相同的

switch(frel.isResolved){ //expression as the parameter to switch
    case "yes": //check the 
        a="yes";break;
    case "no":
        a="no";break;
    default: 
      break;
 }

或者只是将frel.isResolved的值分配给a(因为这是你正在做的事情)

a = frel.isResolved;

编辑

如果你想在遇到no时立即停止

while( rc == RC_SUCCESS && a != "no" )
{
    a = frel.isResolved;
    rc = frel.getNext();
}

0
投票

这里的问题是你没有清除以前的值。清除以前的值。在第一种情况下,将值设为null或为空。

在rc = frel.getNext()之后;语句在转到下一个循环之前清除变量值。

a.val( '');

© www.soinside.com 2019 - 2024. All rights reserved.