Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript和VBScript函数调用_Javascript - Fatal编程技术网

JavaScript和VBScript函数调用

JavaScript和VBScript函数调用,javascript,Javascript,HTML格式: 我用onsubmit调用两个函数,函数返回true或false,但函数只在“第一”时起作用,例如,如果我说“onsubmit=“return CheckTime()&&CheckBreakTime();””,只有当我首先调用CheckBreakTime时,CheckTime才起作用,它才起作用 函数(JavaScript): 函数CheckBreakTime(){ if(document.getElementById('breakco')。选中){ var BKTimeDif

HTML格式:


我用onsubmit调用两个函数,函数返回true或false,但函数只在“第一”时起作用,例如,如果我说“
onsubmit=“return CheckTime()&&CheckBreakTime();”
”,只有当我首先调用CheckBreakTime时,CheckTime才起作用,它才起作用

函数(JavaScript):

函数CheckBreakTime(){
if(document.getElementById('breakco')。选中){
var BKTimeDif1='';
var1=20;
var sum1=var1-BKTimeDif1;
如果(BKTimeDif1>10&&BKTimeDif1<21){
警报(“您的休息时间超过10分钟,您必须等待“+sum1+”分钟才能从休息时间退房。”);
返回false;
}否则{
返回true;
}
} 
否则{
返回true;
}
}
函数CheckTime(){
if(document.getElementById('breakci')。选中){
var TimeDif2='';
var TimeDif1='';
if(TimeDif1<120){
警惕(“你必须工作至少两个小时才能休息。”);
返回false;
}否则{
如果(TimeDif2!=0&&TimeDif2<120){
警惕(“你必须工作至少两个小时才能继续休息。”);
返回false;
}
否则{
返回true;
}
}
}
否则{
返回true;
}
}

还有我放在JavaScript中的VBScript代码:

Dim TimeDif
TimeDif=Round(Csng(DateDiff("n", (HourList.Fields.Item("checkInTime").Value), (Now()))), 2)
Dim BTimeDif
If Not IsNull(HourList.Fields.Item("breakCheckIn").Value) Then
BTimeDif = Round(Csng(DateDiff("n", (HourList.Fields.Item("breakCheckIn").Value), (Now()))), 2)
End If
If Not IsNull(HourList.Fields.Item("breakCheckOut").Value) Then    
Dim BTimeDiff
BTimeDiff = Round(Csng(DateDiff("n", (HourList.Fields.Item("breakCheckOut").Value), (Now()))), 2)
End If
VBScript代码工作正常,它返回它需要的内容,JavaScript得到它。有人能告诉我问题出在哪里吗…

JavaScript使用它的逻辑运算符。这意味着在像
expr1&&expr2
这样的表达式中,只有当
expr1
的计算结果为true时,才会计算
expr2
。如果
expr1
的计算结果为false,则无需计算
expr2
,因为
expr1&&expr2
的结果无论如何都将为false

例如,如果你跑步

var result = foo() && bar();

function foo(){
  console.log("running foo!");
  return false;
}

function bar(){
  console.log("running bar!");
  return false;
}
只执行函数
foo()
。这实际上与:

var result = foo();
if (result){
  result = bar();
}

这就是为什么只调用表达式中的第一个函数。如果返回false,则无需运行第二个函数。

如果希望两个函数都运行,即使第一个函数的计算结果为false,则可以使用“&”:

但是,就我个人而言,我会将它们都封装在一个函数中,该函数聚合了两者的逻辑:

function checkBothTimes(){
  if (!CheckBreakTime()){
    return false;
  }
  else if (!CheckTime()){
    return false;
  }
  return true;
}

尽管这段代码较长,但它使代码更易于阅读(对我而言).

如果您的服务器端vbs正确填充了TimeDif和BTimeDif的值,那么我可以建议这是一个javascript问题,不需要其他两个标记吗?您正在将数字与CheckTime中的字符串进行比较。问题是,我检查了由于vbscript而未显示的按钮,所以javascript只需检查第一个。答案是将隐藏的输入与相同的id放在一起。对不起,如果我冒犯了,对不起,我的语法不好。