Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 Oninput/Onchange未激活功能_Javascript_Html - Fatal编程技术网

Javascript Oninput/Onchange未激活功能

Javascript Oninput/Onchange未激活功能,javascript,html,Javascript,Html,我正在开发一个应用程序,可以计算出天数的差异。有几个日期选项可以使用,也可以不使用。因此,我正在构建一个开关/案例逻辑流来计算不同的变量组合。除了我无法获取函数add_sd()和add_td()来更新它们各自的变量(使用onchange或oninput)并传递到开关盒之外,其他一切都正常工作。如果我将“2”硬编码到日期列表中,则在天数框中生成预期输出(天数差异)。按原样,“天数”框中不显示任何内容。缩写代码的相关部分如下所示: 代码 文件 函数calcBusinessDays(d1,d2){

我正在开发一个应用程序,可以计算出天数的差异。有几个日期选项可以使用,也可以不使用。因此,我正在构建一个开关/案例逻辑流来计算不同的变量组合。除了我无法获取函数add_sd()和add_td()来更新它们各自的变量(使用onchange或oninput)并传递到开关盒之外,其他一切都正常工作。如果我将“2”硬编码到日期列表中,则在天数框中生成预期输出(天数差异)。按原样,“天数”框中不显示任何内容。缩写代码的相关部分如下所示:

代码


文件
函数calcBusinessDays(d1,d2){
var一天=1000*60*60*24;
var d1_days=parseInt(d1.getTime()/一天)-1;
var d2_days=parseInt(d2.getTime()/一天);
风险值天数=(d2天-d1天);
风险值周=(第2天-第1天)/7;
var day1=d1.getDay();
var day2=d2.getDay();
如果(第1天==0){
天--;
}否则如果(第1天==6){
天数-=2天;
}
如果(第2天==0){
天数-=2天;
}否则如果(第2天==6){
天--;
}
天数-=parseInt(周)*2;
返程天数;
}
var add_sd_var=0;
var add_td_var=0;
函数add_sd(){
加上_sd_var=1;
返回add_sd_var;
}
函数add_td(){
var add_td_var=1;
返回add_td_var;
}
var日期列表;
函数GetDays(){
剩余风险天数=7天;
变量num_day,num_day2=0;
var start_date=新日期(document.getElementById(“start_date”).value);
var today_date=新日期(document.getElementById(“today_date”).value);
日期列表=添加变量+添加变量;
开关(日期列表){
案例2:
num_day=calcBusinessDays(开始日期、今天日期);
num_day2=剩余天数-num_day;
document.getElementById(“numdays2”).value=num_day2;
打破
}             
}  

按客户日期接收:

今天的日期:

天数:

进入


主要问题似乎是您正在函数内重新声明
add\u td\u var
,而该函数已在函数外声明。 我对此进行了修改,并删除了一些无效的html分隔符-

。在HTML4中,中断是

(斜杠后面),但在html5中它只是

,不需要关闭标记。如果您想再休息一下,只需添加另一个

。在下面的代码中(删除额外的头/元等),单击按钮时,天数显示在框中

希望这有帮助


函数CalcBusiness Days(d1、d2){
var一天=1000*60*60*24;
var d1_days=parseInt(d1.getTime()/一天)-1;
var d2_days=parseInt(d2.getTime()/一天);
风险值天数=(d2天-d1天);
风险值周=(第2天-第1天)/7;
var day1=d1.getDay();
var day2=d2.getDay();
如果(第1天==0){
天--;
}否则如果(第1天==6){
天数-=2天;
}
如果(第2天==0){
天数-=2天;
}否则如果(第2天==6){
天--;
}
天数-=parseInt(周)*2;
返程天数;
}
var add_sd_var=0;
var add_td_var=0;
函数add_sd(){
加上_sd_var=1;
返回add_sd_var;
}
函数add_td(){
加上_td_var=1;
返回add_td_var;
}
var日期列表;
函数GetDays(){
剩余风险天数=7天;
变量num_day,num_day2=0;
var start_date=新日期(document.getElementById(“start_date”).value);
var today_date=新日期(document.getElementById(“today_date”).value);
日期列表=添加变量+添加变量;
开关(日期列表){
案例2:
//log(“日期列表:”+add\u sd\u var+“”+add\u td\u var);
num_day=calcBusinessDays(开始日期、今天日期);
num_day2=剩余天数-num_day;
document.getElementById(“numdays2”).value=num_day2;
打破
}
}

按客户日期接收:
今天的日期:
天数:
进入

假设您用值
0
声明变量
add\u sd
,紧接着您说
add\u sd
现在是一个函数,然后在函数内部声明
add\u sd
现在是1。。。在第一次函数调用之后,
add_sd
trasnforms将自己从一个函数转换为一个数字,它不再是一个函数了。更改变量或函数名,它们在同一上下文中不能相同请查看功能强大的时间操纵/解析库。@calvin:这是一个很好的观察结果,我更改了它,但不幸的是,它仍然不起作用。“它仍然不起作用”不是很有用,你能给我们提供一个示例并解释什么不起作用吗,例如,您是否遇到控制台错误?电流输出是否与预期不同?请记住,您可以将您的问题添加到相关问题中informations@David:此代码正在嵌入谷歌网站。据我所知,我无法导入库。谢谢!出于某种原因,只有当我删除了头部和元数据(幸运的是,除了重新声明add_td_var之外),它才起作用。有趣的是,头部和元数据在我创建的其他应用程序中从来都不是问题。无论如何,再次感谢。@Marty我只删除了head/metadata,因为它超出了代码段中的要求,您不应该对元数据有任何问题。也许在将来,重新检查你的js,在去除你的头部数据之前,用js身体试试。
<html>
 <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

        <script type="text/javascript">

        function calcBusinessDays(d1, d2) { 
            var one_day=1000*60*60*24;
            var d1_days = parseInt(d1.getTime()/one_day) - 1;
            var d2_days = parseInt(d2.getTime()/one_day);
            var days = (d2_days - d1_days);
            var weeks = (d2_days - d1_days) / 7;
            var day1 = d1.getDay();
            var day2 = d2.getDay();
            if (day1 == 0) {
                days--;
            } else if (day1 == 6) {
                days-=2;
            }
            if (day2 == 0) {
                days-=2;
            } else if (day2 == 6) {
                days--;
            }
            days -= parseInt(weeks) * 2;
            return days;
            }

        var add_sd_var=0;
        var add_td_var=0;
        function add_sd(){
            add_sd_var = 1;
            return add_sd_var;
            }

        function add_td(){
            var add_td_var = 1;
            return add_td_var;
            }

        var date_list; 

        function GetDays(){
                var days_left = 7;
                var num_day, num_day2 = 0;

                var start_date = new Date(document.getElementById("start_date").value);
                var today_date = new Date(document.getElementById("today_date").value);

                date_list = add_sd_var + add_td_var;

                switch(date_list){
                    case 2:
                    num_day = calcBusinessDays(start_date, today_date);
                    num_day2 = days_left - num_day;  
                    document.getElementById("numdays2").value = num_day2;  
                    break;
                }             
                }  
    </script>
    </head>
    <body>
    <p>
    <Fieldset>
    <label class="form">Received by Client Date:</label><input type="date" class="textbox" id="start_date" name="start_date" onchange="add_sd()"/> <br></br>

    <label class="form">Today's Date:</label><input type="date" class="textbox" id="today_date" name="today_date" onchange="add_td()"/> <br></br>

    <label for="numdays2", class="form">Number of days:</label><input type="text" class="textbox" id="numdays2" name="numdays2"/> <br></br>

    <button id="enter" type="button" onclick="GetDays()">Enter</button>

    </Fieldset>
    </p>

</body>