0

id ='paysms'のチェックボックスがチェックされている場合、id ='value'の場合はすべての要素の合計を上げ、それ以外の場合はデフォルト値にする方法について質問があります。

これがコードです。

<table class='table'>
<tr>
<th width='80%'>some things</th>
<th width='20%'>price (usd)</th>
</tr>
<tr>
<td width='80%'>thing1</td>
<td width='20%' id='value'>1.00</td>
</tr>
<tr>
<td width='80%'>thing2</td>
<td width='20%' id='value'>2.00</td>
</tr>
<tr>
<td width='80%'>thing3</td>
<td width='20%' id='value'>3.00</td>
</tr>
<tr>
<td width='80%'>thing4</td>
<td width='20%' id='value'>15.00</td>
</tr>
<tr>
<td width='80%' style='border: none; background: none;'></td>
<td width='20%'><label><input id='paysms' type='checkbox'> sms</label></td>
</tr>
</table> 
4

3 に答える 3

1

undefinedの答えは、(私が理解していることから)あなたが望んでいたことを正確に実行していないようです。IDは一意である必要があるということを理解できたと思います。そのため、JavaScriptを次に示します。

$('#paysms').change(function() {
    if ($(this).is(":checked")) {
        $(".value").each(function() {
            $(this).html(parseInt($(this).html()) + 1 + ".00");
        });
    } else {
        $(".value").each(function() {
            $(this).html(parseInt($(this).html()) - 1 + ".00");
        });
    }
});​

とフィドル: http: //jsfiddle.net/EwEZK/3/

ただし、.00以外の小数値が必要な場合は、変更が必要になります。

于 2012-08-19T02:01:53.727 に答える
1

IDは一意である必要があります。代わりにクラスを使用する必要があります。次のことを試してください。

<table class='table'>
<tr>
<th width='80%'>some things</th>
<th width='20%'>price (usd)</th>
</tr>
<tr>
<td width='80%'>thing1</td>
<td width='20%' class='value'>1.00</td>
</tr>
<tr>
<td width='80%'>thing2</td>
<td width='20%' class='value'>2.00</td>
</tr>
<tr>
<td width='80%'>thing3</td>
<td width='20%' class='value'>3.00</td>
</tr>
<tr>
<td width='80%'>thing4</td>
<td width='20%' class='value'>15.00</td>
</tr>
<tr>
<td width='80%' style='border: none; background: none;'></td>
<td width='20%'><label><input id='paysms' type='checkbox'> sms</label></td>
</tr>
</table>

<p id='result'><p>

jQuery:

$('#paysms').change(function() {
    if (this.checked) {
        var vals = 0;
        $('.value').each(function() {
            vals += parseInt($(this).text(), 10)
        })
        $('#result').text(vals) 
    } else {
        $('#result').text("")
    }
})

フィドル

于 2012-08-19T01:58:37.660 に答える
0

に変更id='value'class='value'ます。

$(document).ready(function(){
    var price = 0; //default value
    $('#paysms').change(function(){
        if ($(this).is(':checked')){
            $('.value').each(function(){
               price += parseFloat($(this).html());
            });
        } else {
            price = 0; // back to default
        }
    });
});
于 2012-08-19T02:13:36.137 に答える