对元素中的数字文本执行计算

时间:2014-04-23 00:55:09

标签: jquery html

我在一个p标签中存储了一个值,然后我有这个条件问题。 如果人们选择是,则答案没有任何改变。如果人们选择否,那么我将从答案中减去一个数字并将其显示在同一位置。 我如何玩这两个选项,如果我再次选择是,则该号码不会回到原始答案。 怎么能让这个工作? 感谢。

HTML:

Do you have a yard
<input type="radio" name="ownyard" value="0">Yes
<input type="radio" name="ownyard" id="yard1" value="0.09789">No
<br>Total trash weight (based on your purchasing behavior):
<p id="wastetotal" class="answer">0.707</p>&nbsp;metric tons

jquery的:

$("input[name='ownyard']:radio").change(function () {
    var value = $(this).attr('value');
    var totalwaste = parseFloat($("#wastetotal").text());
    if ($("#yard1").is(":checked")) {

        var newtrash = totalwaste - value;
    } else {
        var newtrash = totalwaste + value;
    }
    $("#wastetotal").html(newtrash);
});

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。在两个值上使用parseFloat。为了清晰起见,在此演示中简化了值:

http://jsfiddle.net/isherwood/nXYGE/

$("input[name='ownyard']:radio").change(function () {
    var value = parseFloat( $(this).attr('value') );
    var totalwaste = parseFloat( $("#wastetotal").text() );

    if ($("#yard1").is(":checked")) {
        var newtrash = totalwaste - value;
    } else {
        var newtrash = totalwaste + value;
    }

    $("#wastetotal").text(newtrash);
});

请注意,为了清晰和一致,我还清理了一些HTML。

答案 1 :(得分:0)

捕捉这样的原始价值?

var originalwaste = 0.0, isOriginal = false;
$("input[name='ownyard']:radio").change(function () {
    var value = parseFloat($(this).attr('value')),
        totalwaste = parseFloat($("#original").text());
    if ( !( isOriginal ) ) {
        originalwaste = totalwaste; // So now the original waste is stored, you can edit or use it in the future.
        isOriginal = true;
    }
    if ($("#yard1").is(":checked")) {
        var newtrash = totalwaste - value;
    } else {
        var newtrash = totalwaste + value;

    }
    $("#current").html(newtrash);
    $("#original").html(originalwaste);
});

JSFiddle Example