1

我正在尝试创建一个允许多次上传图像的页面,这需要不同的名称属性。为了实现这一点,我使用 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>');
});
});
4

3 回答 3

5

删除第二个var.

您当前的代码在说什么,当new-dialogue单击时,它应该创建一个名为的变量i并将其设置为i+1... 但因为i尚未在您正在执行的此范围内定义undefined + 1,即NaN.

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

也就是说,您可以通过以下方式让您的生活更轻松:

<input type="file" name="image[]" />

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

于 2013-09-01T23:48:56.407 回答
2

代替

var i = i + 1;

做就是了

i++;

您需要增加已声明的变量,而不是再次重新声明它。

于 2013-09-01T23:49:20.040 回答
2

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

摆脱var来解决这个问题。

于 2013-09-01T23:49:54.443 回答