计算返回NaN

时间:2013-09-01 23:47:30

标签: javascript jquery

我正在尝试创建一个允许多次上传图片的页面,这需要不同的名称属性。为了实现这一点,我使用JS添加一个变量i给出一个数字。

以下代码返回NaN,我不太清楚为什么?

$('document').ready(function() {
var i = 1;
$('#new-dialogue').click(function() {
    var i = i + 1;
    $('.create-upload').append('<div class="upload"><input type="file" name="image' + i + '"/></div>');
});
});

3 个答案:

答案 0 :(得分:5)

删除第二个var

您当前的代码所说的是,当点击new-dialogue时,它应该创建一个名为i的变量并将其设置为i+1 ...但是因为{{1}尚未在此范围内定义iundefined + 1

删除第二个NaN将导致click函数从包含范围获取var变量,这是您希望它执行的操作。然后,您可以根据需要i增加它。

那就是说,你可以通过以下方式让生活更轻松:

i++

因为在服务器端,您将拥有一组上传的文件;)

答案 1 :(得分:2)

而不是

var i = i + 1;

只做

i++;

你需要增加已声明的变量,再次重新声明它。

答案 2 :(得分:2)

当您在回调中重新声明i本地时,您的函数会获得自己的i本地副本,但尚未收到值。因此var i = i + 1;基本上是var i = undefined + 1;,其评估结果为NaN

摆脱var来解决这个问题。