-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"。你不能那样做。行尾也有类似的问题。

    每一个都应该只是一个字符串:

    $( body ).append( "<p>You have"+ secs + "of life</p>" );
    
  2. 您的代码依赖于 jQuery,但您的页面中似乎没有script包含 jQuery 的标签。如果它不存在,您需要添加它。

  3. 这条线在两个方面存在问题:

    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

你真的包括了jquery吗?

从你所展示的你没有

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

需要包括在页面顶部的

<head> 

部分

于 2014-01-05T11:03:12.067 回答
0

此代码中似乎不包含 jquery 文件。请验证,如果不包含,则在 html 页面的 head 部分添加下面给出的代码。

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
于 2014-01-05T11:06:10.673 回答
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 回答