regex 搜索多个HTML #ID并传递给函数

0qx6xfy6  于 2023-10-22  发布在  其他
关注(0)|答案(6)|浏览(119)

我有一个订单,我可以通过点击一个按钮来添加字段。我有一些后端JavaScript运行的订单价格总额,但总脚本是逃避我。
我的问题是,我需要的脚本搜索整个DOM,并找到有多少有一个ID匹配以下模式。
Totprice01 totprice02 totprice03 totprice(n)
我一直在玩这个RegExp,但恐怕运气不好:

matchStr = new RegExp("\\btotprice\\d{2}\\b", "gi");

一旦我得到了所有HTML ID的数组,我需要将它们传递到一个函数中,到目前为止看起来像这样-注意它都是硬编码的,而不是动态的:

document.getElementById('totpricetot').value = Math.round((parseFloat(document.getElementById('totprice1').value)+parseFloat(document.getElementById('totprice2').value)+parseFloat(document.getElementById('totprice3').value)+parseFloat(document.getElementById('totprice4').value)+parseFloat(document.getElementById('totprice5').value)+parseFloat(document.getElementById('totprice6').value)+parseFloat(document.getElementById('totprice7').value)+parseFloat(document.getElementById('totprice8').value)+parseFloat(document.getElementById('totprice9').value)+parseFloat(document.getElementById('totprice10').value))*100)/100;

如何将这个表达式+函数返回所有值的总和到<input id="totpricetot">中?

brqmpdu1

brqmpdu11#

我喜欢SO上每个JavaScript问题的答案都是“使用jQuery”.
无论如何,你也可以用普通的JavaScript来做:

var inputs = document.getElementsByTagName("input");
var priceInputs = [];
for (var i=0, len=inputs.length; i<len; i++) {
    if (inputs[i].tagName.indexOf("totprice") > -1) {
        priceInputs[priceInputs.length] = parseInt(inputs[i].value);
    }
}
calcTotal(priceInputs);

然后创建一个函数来循环遍历数组并求和(:

velaa5lx

velaa5lx2#

有很多解决方案。除了给所有有问题的元素提供相同的类名并使用jQuery(或类似的东西)之外,您还可以简单地记住某个JavaScript变量中元素的总数。有可能吗?我知道-这是一种老派的解决办法。您没有表明您正在使用jQuery或任何其他JavaScript库,因此它可能更适合您。

**编辑:**只是为了更明确:

// your variable, updated every time you add/remove a new field
var fieldsCount; 

// whenever you need to do anything with all the fields:
for (var i = 0; i < fieldsCount; i++)
{
    var field = document.getElementById("totprice" + i);
    // ...
}
pqwbnv8z

pqwbnv8z3#

使用jQuery,你可以像这样选择和求和元素:

var sum = 0;
$('[id^=totprice-]').each(function()
{
    sum += $(this).val();
});
8cdiaqws

8cdiaqws4#

给予对一个类求和所需的输入,然后通过类名获取这些输入(jQuery或其他框架在这里会派上用场)。
如果你使用jQuery,你可以这样做:

function calculateSum () {
    var sum = 0;
    $( '.YourClass' ).each ( function () {
        sum += $( this ).val () * 1;
    } );

    return sum;
}
nafvub8i

nafvub8i5#

您可以给予所有总价元素相同的CSS类,然后获取该类的所有元素(使用JQuery很方便)。

jmo0nnb3

jmo0nnb36#

给予每个元素一个类并使用jQuery。

相关问题