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 に答える