【问题标题】:Calculation returns NaN计算返回 NaN
【发布时间】:2013-09-01 23:47:29
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    删除第二个var

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      代替

      var i = i + 1;
      

      做事

      i++;
      

      你需要增加已经声明的变量,不要重新声明一次。

      【讨论】:

        【解决方案3】:

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

        摆脱var 来解决这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-11
          • 1970-01-01
          • 1970-01-01
          • 2012-10-08
          • 2020-11-18
          • 2014-07-22
          • 1970-01-01
          • 2014-01-05
          相关资源
          最近更新 更多