bugfix> javascript > 投稿

誰かがJavascriptがそこで何をしているのか説明してもらえますか?

日付を変換するためにmsを1で割る必要があるのはなぜですか?

d1=new Date(board.resultsbox.value/1);
d2=new Date(board.resultsbox.value);
board.resultsbox1.value=d1; //Fri Nov 01 2013 00:30:00 GMT+0100 (CET)
board.resultsbox2.value=d2; //Invalid Date

ありがとう、素敵な週末を。

<html>
<head>
  <title>calculator based on javascript.</title>
</head>
<body>
  <form name="board" id="board">
    <input type="input" id="resultsbox" value="1383262200000">
    <input type="input" id="resultsbox1">
    <input type="input" id="resultsbox2">
  </form>
  <input type="button" onclick="
    d1=new Date(board.resultsbox.value/1);
    d2=new Date(board.resultsbox.value);
    board.resultsbox1.value=d1;
    board.resultsbox2.value=d2;" style="height: 80px;" value="=">
</body>
</html>

回答 5 件
  • 考えていることとは異なり、キャストは問題ではありません ここがフォーマット です。

    board.resultsbox.value  は String です

    new Date()には次の有効な引数セットがあるため、これは受け入れられます。

    new Date();
    new Date(value);
    new Date(dateString);
    new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
    
    

    しかし、明らかに、 board.resultsbox.value  数値のタイムスタンプを表す文字列です。 new Date(dateString)  Date.parse()で解析可能な文字列を受け入れるために失敗します(例 '01 Jan 1970 00:00:00 GMT' )一方、 Number として渡される数値のタイムスタンプが必要 。

    分割は、 String をキャストする1つの暗黙的な方法です   Number へ 。したがって、正しい形式と引数セットが満たされ、 new Date()  動作します。

  • なぜなら board.resultsbox.value  文字列値です。算術演算(この場合は1で割る)を追加すると、それは Date で受け入れられる数値に自動的に変換されます  コンストラクタ。 parseInt を使用しても同じ(ただしクリーナー)を実現できます  次のような機能:

    var millis = parseInt(board.resultsbox.value);
    
    

    Date の詳細を読むことができます  ここでコンストラクタ。

    また、たとえばこのStack Overflowスレッドのように、Stringを数値に変換する方法に関する情報がたくさんあります。

  • この1による除算は、文字列を数値に変換する方法の1つ(実際には奇妙な方法)です。 私はあなたの値が文字列として来ていると仮定し、日付シードとして解析されるためには数値である必要があります

  • テキストフィールドから返される値は文字列で、 new Date に値を渡すことができるコンストラクターです  数字が必要です。

    javasciptで文字列を数値に変換するには、いくつかの方法があります。

    parseInt

    +"1234"

    "1234"/1

    このコードの作者は後者の例に行ったようです

  • 数値に解析してから日付に変換する必要があります。

    <html>
    <head>
      <title>calculator based on javascript.</title>
    </head>
    <body>
      <form name="board" id="board">
        <input type="input" id="resultsbox" value="1383262200000">
        <input type="input" id="resultsbox1">
        <input type="input" id="resultsbox2">
      </form>
      <input type="button" onclick="
        d1=new Date(board.resultsbox.value/1);
        d2=new Date(parseFloat(board.resultsbox.value));
        board.resultsbox1.value=d1;
        board.resultsbox2.value=d2;" style="height: 80px;" value="=">
    </body>
    </html>
    
    

あなたの答え