获取id更改的元素的值

时间:2014-04-11 18:15:27

标签: javascript

我试图在页面上获取多个输入的值。输入的ID是动态生成的。

<input id="updates_662224305" class="text quantity" type="text" value="1" name="updates[662224305]" size="4">

我正在运行包含输入的表和单元格的循环。我得到了输入所在的单元格的innerHTML,然后切割它们的id所在的部分:

var racetamarray = [],
racetamtotal = 0,
table = document.getElementById('cart-table'),
cells = table.getElementsByTagName('td');

for (var i=0,len=cells.length; i<len; i++){

    if(cells[i].innerHTML.indexOf("ncombo-racetam") != -1) {
        i+=3;
        var racetaminput = cells[i].innerHTML;
        var racetaminputcontain = racetaminput.slice(43,60);
        var racetamelem = document.getElementById(racetaminputid);
        racetamarray.push(parseInt(racetamelem.value));
    }
}

这在firefox中有效,因为我能够提取它们的id并将它们放在变量racetamelem中。然而,当我在chrome中尝试它时它不起作用,切片发生在字符串的不同部分并且不捕获它们的ID。有没有更好的方法来切片或将输入从字符串转换为DOM元素?

表格中某一行的HTML:

<tr class="item sampler-pramiracetam-capsules">
<td>
<span class="ncombo-racetam"></span>
<a href="/products/sampler-pramiracetam-capsules">
<img src="//cdn.shopify.com/s/files/1/0173/1766/products/PramiracetamCaps_grande_thumb.jpg?v=1396441752"  alt="Sampler, Pramiracetam Capsules" />
</a>
</td>
<td>
<a href="/products/sampler-pramiracetam-capsules">Sampler, Pramiracetam Capsules - 30 Capsules</a></td>
<td>$8.90</td>
<td><input class="text quantity" type="text" size="4" id="updates_658967781" name="updates[658967781]" value="1" class="replace"  /></td>
<td>$8.90</td>
<td><a class="btn remove-from-cart" href="/cart/change?id=658967781&quantity=0">Remove</a></td>
</tr>

1 个答案:

答案 0 :(得分:1)

这将遍历表行并检查第一个单元格中具有类名的任何元素,如果找到,则将输入值(从第四个单元格)推送到数组。

演示:http://jsfiddle.net/SEaE4/

var racetamarray = [];
var table = document.getElementById('cart-table');
var row;

for(var i=0; i<table.rows.length; i++){
    row = table.rows[i];
    if(row.cells.length > 3){
        if(row.cells[0].querySelectorAll('.ncombo-racetam').length) {
            racetamarray.push(row.cells[3].getElementsByTagName('input')[0].value);
        }
    }
}

console.log(racetamarray);

附注:如果您需要支持IE7或更早版本,则需要使用更多代码替换querySelectorAll()调用以检查该类的每个元素。