Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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 简单日期差码_Javascript_Html_Datetime - Fatal编程技术网

Javascript 简单日期差码

Javascript 简单日期差码,javascript,html,datetime,Javascript,Html,Datetime,我一直在尝试执行这段代码。我是一名初学者,正在用简单的例子练习HTML/Javascript。有人能告诉我这个代码有什么问题吗 <html> <body> <script language="javascript"> function dateDiff() { var f1, f2, d1, d2, one_day, diff; f1=document.getElementById("f1");

我一直在尝试执行这段代码。我是一名初学者,正在用简单的例子练习HTML/Javascript。有人能告诉我这个代码有什么问题吗

<html>
  <body>
    <script language="javascript">
    function dateDiff()
    {
      var f1, f2, d1, d2, one_day, diff;
      f1=document.getElementById("f1");
      f2=document.getElementById("f2");
      d1=new Date(f1);
      d2=new Date(f2);
      one_day=1000*60*60*24;
      diff=Math.ceil((d1.value()-d2.value())/(one_day));
      alert
      {
        ("The difference is" +diff.value()+ "days");
      }
   }
   </script>
   <form>
     <input type=date name=f1 id=f1>
     <input type=date name=f2 id=f2>
     <input type=button name=f3 value="Get Difference" onclick="dateDiff">
   </form>
  </body>
</html>

函数dateDiff()
{
变量f1、f2、d1、d2,一天,差异;
f1=document.getElementById(“f1”);
f2=document.getElementById(“f2”);
d1=新日期(f1);
d2=新日期(f2);
一天=1000*60*60*24;
diff=Math.ceil((d1.value()-d2.value())/(一天);
警觉的
{
(“差值为“+diff.value()+”天”);
}
}

除了日期解析字符串可能出现的错误外,您还有:

alert
{
("The difference is" +diff.value()+ "days");
}
alert是一种方法,因此名称和参数列表之间不应存在块,并且diff的值是一个没有值方法的数字,请尝试:

alert("The difference is" + diff + "days");
您可能已经被告知,如果需要,在计算表达式时会将原语强制为对象,因此您可以执行以下操作:

var a = 4;
alert( a.valueOf() );  // 4
为了显示警报的值,警报将调用toString,这实际上与调用valueOf并将其转换为字符串相同:

alert( a.toString() );  // 4
试试这个:

<html>
    <body>
        <script language="Javascript" type="text/Javascript">
        function dateDiff()
        {
            var f1, f2, d1, d2, one_day, diff;
            f1=document.getElementById("f1").value; // .value to get value of input text.
            f2=document.getElementById("f2").value; // .value to get value of input text.

            d1=new Date(f1);
            d2=new Date(f2);
            one_day=1000*60*60*24;
            diff=Math.ceil((d1-d2)/(one_day)); // d1-d2 but not d1.value()-d2.value()
            alert("The difference is" +diff+ "days"); // alert the difference of d1 and d2 by diff but not diff.value().
        }
        </script>
        <form>
            <input type=date name=f1 id=f1>
            <input type=date name=f2 id=f2>
            <input type=button name=f3 value="Get Difference" onclick="dateDiff()">
        </form>
    </body>
</html>

函数dateDiff()
{
变量f1、f2、d1、d2,一天,差异;
f1=document.getElementById(“f1”).value;/.value以获取输入文本的值。
f2=document.getElementById(“f2”).value;/.value以获取输入文本的值。
d1=新日期(f1);
d2=新日期(f2);
一天=1000*60*60*24;
diff=Math.ceil((d1-d2)/(一天));//d1-d2但不是d1.value()-d2.value()
警报(“差值为“+diff+”天”);//按差值而非差值()警报d1和d2的差值。
}

您会遇到什么错误?您要将什么值传递给
新日期()
?将日期字符串的解析留给日期构造函数是出了名的容易出错的。而且,我没有任何错误。我只是在用记事本和chrome,你看。我认为这是一个范围问题。您正在对元素调用
alert()
,但需要在窗口范围内调用它。见: