0

我对 JS 和 jQuery 很陌生,所以这可能是一个菜鸟问题。我正在构建一个 WordPress 主题,选项页面让用户选择他们想要多少页脚小部件插槽,我们将其称为 X,X 的可能值为 1-6。如果 X=4,那么我会显示 4 个输入,然后它们可以指定每个插槽的宽度。

我还显示了所有插槽的运行总数,以便用户始终知道它们是否处于 100%。我这样做的程序很简单,但可能效率不高。我知道我可以通过循环来做到这一点,但现在我只了解如何添加文字输入:input_1 + input_2 + input_3 等。

这在 onChange 和 keuyup 事件中运行良好,但问题是在页面加载时,我的例程不知道有多少输入可见,如果所有 6 个输入都不存在,则它没有正确添加值。我需要更改此例程,以便在不使用输入时假定值为 0,即如果 X=4,则隐藏 input_5 和 input_6。

function displaytotal() {
    var num = 0;
    num = parseFloat($('#wa1').val(),10) + 
        parseFloat($('#wa2').val(),10) + 
        parseFloat($('#wa3').val(),10) + 
        parseFloat($('#wa4').val(),10) + 
        parseFloat($('#wa5').val(),10) + 
        parseFloat($('#wa6').val(),10);
    num = Math.round(num);
    if( isNaN(num) ) {
        $('#total100').val('???');
    } else {
        $('#total100').val(num);
        if( $('#total100').val() == 100 ) {
            $('#total100').css({"color":"green"});
        } else {
            $('#total100').css({"color":"red"});
        }
    }
}
4

1 回答 1

0

当元素重复时,它是使用类名而不是 ID 的指示符。这样,任何具有匹配类选择器的元素都可以在循环中使用,无论有多少。

.filter(":visible")将只选择那些可见的。

var num = 0
$('.myClass').filter(":visible").each(function() {
    num = num +  parseFloat($(this).val(),10)        
})
于 2013-03-13T17:05:39.980 回答