1

アラートを取得しようとしましたが、何らかの理由で最後のアラートを取得して、このコードからの差分を取得できません。結果が得られない理由を誰か説明できますか? :

<!DOCTYPE HTML>
<html>
<body>

<input type="date" id="a"> 
<input type="date" id="b">
<input type="submit" id="c" onclick="getValue()">
<script>
    function getValue(){
        var startDate = document.getElementById("a").value;
        var endDate = document.getElementById("b").value;

        var parts1 = startDate.split('-'); 
        var parts2 = endDate.split('-');

        var date1 = new Date(parts1);
        var date2 = new Date(parts2);

        var difference = Math.Abs(parts1 - parts2);
        difference = parseInt(difference / 86400000);

        alert(difference);
    }
</script>


</body>
</html>
4

2 に答える 2

3

このコードにはいくつかの問題があります。

  • Dateparts1is whatとareの配列は必要ありませんparts2。期待される形式の日付文字列であるstartDateandを使用するだけです。コンストラクターは実際に配列を取り、その引数を個別に渡されたかのように扱うように見えますが、必須ではありません。endDateDateDate

    > new Date(['2013', '10', '29']);
    Tue Oct 29 2013 00:00:00 GMT-0500 (CDT)
    
  • Math.Abs存在しません; Math.absあなたが探しているものです。

  • 日付オブジェクトを使用getTime()して計算を行います。Math.abs(date1.getTime() - date2.getTime());

これらの修正をコンテキストで表示するフィドルを次に示します

于 2013-10-29T21:08:29.897 に答える