Javascript:循环遍历类并推送输入

时间:2017-03-21 09:22:45

标签: javascript jquery html

我将某些输入值推送到array时出现问题。我有一个可以克隆的divoptiondiv。这个div有一些表行,其中包含一些输入字段,如下所示:

<div class="optiondiv">
    <table class="tableOptions">
        <tr>
            <td>
                <input type="text" class="title">
            </td>

            <td>
                <input type="text" class="position">
            </td>
            <td>
                <select class="input">
                    <option value="1">Drop-down</option>
                    <option value="2">Radio Buttons</option>
                    <option value="3">Checkbox</option>
                    <option value="4">Multiple Select</option>
                </select>
            </td>
            <td>
                <input type="checkbox" class="required"> Required?
            </td>
        </tr>
        </tbody>
    </table>
</div>

我试图获取该选项的所有输入字段,为每个选项,然后将它们推送到数组。问题是,没有“分裂”的问题。每个选项之间。如果我使用console.log();,则值将按如下方式打印:[Doors, 1, Windows, 5]但我真正想要的是

[0][Doors, 1]
[1][Windows, 5]

这是我正在使用的代码:

$('.generateString').click(function (e)
    {
        e.preventDefault();
        $('.optiondiv').each(function(){
            var arrText = new Array();

            $('input[type=text]').each(function ()
            {
               if($(this).val() != ''){
                   // arrText.push('nietleeg');
                   arrText.push($(this).val());
                }
            })
            console.log(arrText);
        })

    });

快乐的编码!

1 个答案:

答案 0 :(得分:1)

首先,而不是

$('input[type=text]').each(function ()

你需要使用它来获取每个.optiondiv

中的输入元素
$(this).find('input[type=text]').each(function ()

根据您的要求,只需在外部定义数组变量,并在每个循环内创建关联数组,如下所示

$('.generateString').click(function(e) {
    e.preventDefault();
    var arrText = new Array();
    $('.optiondiv').each(function(i) {
        if (typeof arrText[i] == "undefined")
            arrText[i] = new Array();

        $(this).find('input[type=text]').each(function() {
            if ($(this).val() != '') {
                // arrText.push('nietleeg');
                arrText[i].push($(this).val());
            }
        })
        console.log(arrText[i]);
    })

    console.log(arrText);

});