【问题标题】:Javascript: could not get the value inside an array using for in loopJavascript:无法使用 for in 循环获取数组内的值
【发布时间】:2015-04-11 07:54:39
【问题描述】:

我想在表单中向管理员显示带有用户填写值的表单。我已将所有类型的值显示到相应类型的输入/选择/文本区域标签(类型:文本、电子邮件、电话、数字...等),输入类型=复选框除外。

我在从包含复选框组值的数组中获取值时遇到问题。我的代码是

                    var value = data[i][key];
                var result = $.isArray(value);
                if (result == true) {
                    var string = key;
                    var splitstring = string.split("#");
                    for (var value1 in value) {
                        console.log(value1);
                        $("input[type='checkbox'][groupid='" + splitstring[0] + "'][value='" + value1 + "']").attr('checked', true);  //cb
                    }
                }

我的数组(命名值)包含像 [板球、足球、网球]

希望选中符合条件的复选框属性。但是当我控制台一一获取的值时,它显示我的输出为 0 1 2

我不明白这是什么???

我的html代码

                <table class="form-group">
                <tbody id="tedit">
                    <tr>
                        <td>
                            <div class="checkbox">
                                <input id="dddddddd#1428735544884535#check_box1" class="form-control" name="14287355448849394#dddddddd[]" groupid="14287355448849394" grid-name="dddddddd" value="Check Box1" type="checkbox" /><label class="jedit"><span class="mouseover">Check Box1</span></label>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <div class="checkbox">
                                <input id="dddddddd#14287355448843282#check_box2" class="form-control" groupid="14287355448849394" grid-name="dddddddd" name="14287355448849394#dddddddd[]" value="Check Box2" type="checkbox" /> <label class="jedit"> <span class="mouseover">Check Box2</span></label>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <div class="checkbox">
                                <input id="dddddddd#14287355448853367#check_box3" class="form-control" groupid="14287355448849394" grid-name="dddddddd" name="14287355448849394#dddddddd[]" value="Check Box3" type="checkbox" /> <label class="jedit"> <span class="mouseover">Check Box3</span></label>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>

我的 javascript 代码是

$.post('<?php echo BASE_URL . 'php/processing/formDashboard/formEntryShowOneByOne.php' ?>', {id: $('#formMetaDataId').val()}, function(data) {
        console.log(data);
        for (var i = 0, len = data.length; i < len; i++) {
            for (var key in data[i]) {
                $("input[type='text'][name='" + key + "']").val(data[i][key]); //input tags
                $("input[type='text'][name='" + key + "']").prop('disabled', 'true'); //input tags

//........likewise for other type of elements.......///

//.....................for checkbox........................//
                var value = data[i][key];
                var result = $.isArray(value);
                if (result == true) {
                    var string = key;
                    var splitstring = string.split("#");
                    for (var value1 in value) {
                        console.log(value1);
                        $("input[type='checkbox'][groupid='" + splitstring[0] + "'][value='" + value1 + "']").attr('checked', true);  //cb
                    }
                }

            }
        }
    });

【问题讨论】:

  • 发布您的表单 html 代码和完整的循环代码。
  • 嗯,html太大了,所以我只发布了复选框部分

标签: javascript jquery


【解决方案1】:

这很简单。 'cricket' 字符串可以这样检索:

value[value1]

value1 只是迭代器,在您的示例中为 0,1,2

这是你的工作代码:

var value = data[i][key];
var result = $.isArray(value);
if (result == true) {
    var string = key;
    var splitstring = string.split("#");
    for (var value1 in value) {
        console.log(value[value1]);
        $("input[type='checkbox'][groupid='" + splitstring[0] + "'][value='" + value[value1] + "']").attr('checked', true);  //cb
    }
}

【讨论】:

  • 哦!我就是这样。我应该将循环作为 PHP foreach 循环。谢谢我接受这个答案
  • 当然,很高兴为您提供帮助 ;-)
【解决方案2】:

你应该使用forEach函数

value.forEach(function(val)
{
  console.log(val);
  //do your thing here
});

【讨论】:

    【解决方案3】:

    这就是 for ... in 循环对数组的工作原理:

    var a = ['a','b','c'];
    for (var i in a) {
      alert(i); // alerts 0,1,2
      alert(a[i]); // alerts a,b,c
    }

    因此,您只需要使用循环变量来索引您的数组:

    var value = data[i][key];
    var result = $.isArray(value);
    if (result == true) {
        var string = key;
        var splitstring = string.split("#");
        for (var valueIndex in value) {
            console.log(value[valueIndex]);
            $("input[type='checkbox'][groupid='" + splitstring[0] + "'][value='" + value[valueIndex] + "']").attr('checked', true);  //cb
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2015-06-13
      • 2011-11-06
      相关资源
      最近更新 更多