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

未定义的答案似乎并不完全符合您的要求(据我了解)。我想你现在明白了,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 回答