简体   繁体   English

遍历多个div并从每个div提取每个输入值

[英]Looping through multiple divs and pulling each input value from each

I have created an html page the will dynamically add or remove inputs, all within a parent div, each having their own div to determine each seperatly. 我创建了一个html页面,它将动态添加或删除输入,所有输入都在父div内,每个都有自己的div来分别确定每个div。 I have the logic to loop through and find these child divs, however I cannot seem to figure out how to grab the inputs from each div, only the first child div even though I am looping through all children. 我有遍历并找到这些子div的逻辑,但是,即使我正在遍历所有子级,我似乎也无法弄清楚如何从每个div(仅第一个子div)中获取输入。

Any idea how? 任何想法如何?

html: HTML:

<div id="volumeRateDiv">
<div id="volumeRateDivNew_0" class="volumeRateDivChild">
    <input id="kc_start" type="number" name="kc_start" maxlength="9" step="1" min="0" placeholder="0">
    <input id="volume_rate" type="number" name="volume_rate" maxlength="12" step=".0001" min="0" placeholder="0.0000">
    <input id="delete_VolumeRate" type="button" name="delete_VolumeRate" value="Delete" onclick="removeItem('volumeRateDivNew_0')">
</div>
<div id="volumeRateDivNew_1" class="volumeRateDivChild">
    <input id="kc_start" type="number" name="kc_start" maxlength="9" step="1" min="0" placeholder="0">
    <input id="volume_rate" type="number" name="volume_rate" maxlength="12" step=".0001" min="0" placeholder="0.0000">
    <input id="delete_VolumeRate" type="button" name="delete_VolumeRate" value="Delete" onclick="removeItem('volumeRateDivNew_1')">
</div>
</div>

Javascript: 使用Javascript:

var divs = document.getElementsByClassName("volumeRateDivChild");

for(var i = 0; i < divs.length; i++)
{
    var div = divs[i];
    alert (div.className+" - "+div.id+" - "+document.getElementById("kc_start").value );
}

You could add the same index number (0, 1, etc) to the end of the inputs' IDs, and then use that in the for loop, eg: 您可以在输入ID的末尾添加相同的索引号(0、1等),然后在for循环中使用该索引号,例如:

for(var i = 0; i < divs.length; i++)
{
    var div = divs[i];
    alert (div.className+" - "+div.id+" - "+document.getElementById("kc_start_" + i).value );
}

The first comment in your answer is correct all id's should be unique. 答案中的第一条评论是正确的,所有ID均应唯一。

If you can be certain that the input you want to extract the value of is always the first child then you could do the same as this jsfiddle 如果可以确定要提取其值的输入始终是第一个孩子,则可以与此jsfiddle相同

<div id="volumeRateDiv">
<div id="volumeRateDivNew_0" class="volumeRateDivChild">
    <input id="kc_start" type="number" name="kc_start" maxlength="9" step="1" min="0" placeholder="0" value="0"/>
        <input id="volume_rate" type="number" name="volume_rate" maxlength="12" step=".0001" min="0" placeholder="0.0000"/>
        <input id="delete_VolumeRate" type="button" name="delete_VolumeRate" value="Delete" onclick="removeItem('volumeRateDivNew_0')"/>
</div>
<div id="volumeRateDivNew_1" class="volumeRateDivChild">
    <input id="kc_start" type="number" name="kc_start" maxlength="9" step="1" min="0" placeholder="0" value="0"/>
    <input id="volume_rate" type="number" name="volume_rate" maxlength="12" step=".0001" min="0" placeholder="0.0000"/>
        <input id="delete_VolumeRate" type="button" name="delete_VolumeRate" value="Delete" onclick="removeItem('volumeRateDivNew_1')"/>
</div>
</div>

var divs = document.getElementsByClassName("volumeRateDivChild");

for(var i = 0; i < divs.length; i++)
{
    var div = divs[i];
    alert (div.className+" - "+div.id+" - "+div.children[0].value );
}

First of all, as @tymeJV already had mentioned, ids of HTML elements must be unique. 首先,正如@tymeJV已经提到的那样,HTML元素的ID必须是唯一的。 So you need remove them or make them unique, if you plan to use them anywhere else (not in this case). 因此,如果您打算在其他地方使用它们(在这种情况下不使用),则需要将其删除或使其唯一。

To locate elements inside your divs you could use classes or names. 要在div中定位元素,可以使用类或名称。 You can call getElementsByClassName or getElementsByName not only on document , but on any DOM-element. 您不仅可以在document ,而且可以在任何DOM元素上调用getElementsByClassNamegetElementsByName It could look like this: 它可能看起来像这样:

var divs = document.getElementsByClassName("volumeRateDivChild");

for(var i = 0; i < divs.length; i++)
{
    var div = divs[i];
    alert(div.className+" - "+div.id+" - "+div.getElementsByName("kc_start")[0].value );
}

Do it this way 这样做

var divs = document.getElementsByClassName("volumeRateDivChild");

for(var i = 0; i < divs.length; i++)
{
    var div = divs[i];
    alert (div.className+" - "+div.id+" - "+div.children["kc_start"].value );
}

Demo: Demo 演示: 演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM