-2

私はこれが初めてで、jQueryで簡単な計算をしようとしていますが、うまくいきません。誰か助けてくれませんか?ありがとう、これは私の改善されたコードです、私はあなたのヒントを追加しましたが、まだ動作しません (何もしません):

    <!DOCTYPE html>
<html lang="en"/>

<head>
    <title>Seconds</title>
    <meta charset="utf-8"/>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

    Years <input type="value" name="secs" id="secs"><br>
    <input id="sub" type="submit" value="Submit">

<script type="text/javascript">

$(function(){

    $('#sub').click(function(){
    var years = $('#secs').val();
    var secs = years * 365 *24*60*60;
    $('body').append( '<p>You have' + secs + 'of life</p>' );
    });
})

</script>
</body>
</html>
4

5 に答える 5

2

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

  1. Web コンソールを見ると、次の行が原因で構文エラーが表示されます。

    $( body ).append( '<p>'"You have"+ secs + "of life"'</p>' );
    

    '<p>'文字列の直後に別の文字列 が続くことに注意してください"You have"。そんなことはできません。行末にも同様の問題があります。

    それぞれが 1 つの文字列である必要があります。

    $( body ).append( "<p>You have"+ secs + "of life</p>" );
    
  2. scriptあなたのコードは jQuery に依存していますが、あなたのページには jQuery を含むタグがないようです。ない場合は追加する必要があります。

  3. この行には、次の 2 つの点で問題があります。

    years = $('#secs').val();
    

    #secsユーザーが値を入力するのを待つのではなく、ページが読み込まれるとすぐに要素から値を取得しています。また、あなたはそれから何年もつかむことを期待しているようです. これid "secs"は...奇妙に思えます...あなたが何年にもわたって見つけることを期待している分野としては.

    読み込み時に値を取得するのではなく、subボタンがクリックされたときに値を取得します。(それをclickハンドラー関数に移動します。)

  4. あなたのボタンは送信ボタンなので、フォームを送信します。既存のページに情報を表示する場合は、そのようにしたくありません。ボタンのタイプをbuttonではなくに変更しますsubmit

  5. 変数を宣言していないため、暗黙のグローバルの恐怖の餌食になっていyearsます。常に、変数varが必要な最も内側のスコープで を使用して変数を宣言します。

于 2014-01-05T11:04:09.150 に答える
1

いくつかのエラーがあります。

  • フォームを送信する送信ボタンのクリックイベントを停止するために .preventDefault() を追加しました
  • ベスト プラクティスは、parseInt() を使用して入力を整数に変換することです。
  • クリックハンドラー内で年を読み取る必要があります
  • 本文に追加するときの文字列の扱いが正しくありませんでした

してみてください:

$('#sub').click(function (e) {
    e.preventDefault();
    var years = $('#secs').val();
    var secs = parseInt(years, 10) * 365 * 24 * 60 * 60;
    $('body').append('<p>You have ' + secs + ' of life</p>');
});

JS Fiddle - 作業バージョン

于 2014-01-05T11:08:38.920 に答える
0
<!DOCTYPE html>
<html lang="en"/>

<head>
    <title>Seconds</title>
    <meta charset="utf-8"/>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

    Years <input type="value" name="secs" id="secs"><br>
    <input id="sub" type="submit" value="Submit">

<script type="text/javascript">

$(function(){

    $('#sub').click(function(){
        var years = $('#secs').val();

    var secs = years * 365 *24*60*60;
    $('body').append( '<p>You have' + secs + 'of life</p>' );
    });
});

</script>
</body>
</html>

あなたが犯したエラー:

No jQuery included

$(body) should be $('body')

 '<p>'"You have"+ secs + "of life"'</p>' should be '<p>You have' + secs + 'of life</p>'

 var years = $('#secs').val(); //needed to be within your function otherwise it is calculated on page load NOT when you click button (so will always be 0)
于 2014-01-05T11:09:07.027 に答える