【问题标题】:Why can't I use this variable in my for loop?为什么我不能在我的 for 循环中使用这个变量?
【发布时间】:2016-10-23 20:12:36
【问题描述】:

所以我在为这个函数运行循环时遇到了问题。我似乎无法在 for 循环中使用 var formappend,即使当我在表单中输入数字时我的 var formappend 会向控制台返回一个数字。 p>

var formappend = $('input[name=inputform]').val();
  for (var i = 0; i < formappend; i++){
      $('button').one('click', function(i) {
            var newblock = $("<div class='block'></div>").text("");
            $('#funbox').append(newblock);
                });
  }

谢谢

【问题讨论】:

标签: javascript forms loops input


【解决方案1】:

首先,您需要在点击处理程序中运行“for”循环。目前,您在“for”循环中绑定了一个点击处理程序,所以试试这个:

$('button').on('click', function(i) {
    $('#funbox').text('');
    var formappend = parseInt($('input[name=inputform]').val());
    if(isNaN(formappend)) return false;

    for (var i = 0; i < formappend; i++){      
        var newblock = $("<div class='block'></div>").text("");
        $('#funbox').append(newblock);
    }
});

检查一下: https://jsfiddle.net/s24edozb/5/

【讨论】:

  • @Jordan,您是否应用了更改后的脚本。它对你有用吗?
  • 明白了,当我阅读代码时这一切都很有道理,但我仍然遇到问题。
  • 令我困惑的是,当我给 for 循环一个数字时,它会做我想做的事。示例:jsfiddle.net/JordanS1234/s24edozb/4 现在的问题是为什么即使我使用了 parseInt,我的表单输入也不起作用。
  • 和@Marek 一样,将 for 循环放在点击处理程序中被证明是一个问题。直觉上是有道理的,也许我的语法不正确。
  • 需要做的另一个改变是将var formappend = parseInt($('input[name=inputform]').val()); 作为“点击”处理程序的第一行。它改变了什么?它将在单击时评估输入值,而不是在页面加载时。我只是更改了答案代码,所以请仔细检查。
【解决方案2】:

formappend 不是整数,它是从这个调用返回后的字符串:

$('input[name=inputform]').val();

尝试像这样对结果调用 parseInt():

var formappend = parseInt($('input[name=inputform]').val());

另外,我认为您的意思是调用 .on 方法,而不是按钮上的 .one 方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多