我正在尝试创建一个允许多次上传图片的页面,这需要不同的名称属性。为了实现这一点,我使用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>');
});
});
答案 0 :(得分:5)
删除第二个var
。
您当前的代码所说的是,当点击new-dialogue
时,它应该创建一个名为i
的变量并将其设置为i+1
...但是因为{{1}尚未在此范围内定义i
,undefined + 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
来解决这个问题。