Jquery脚本不会评估元素变量

时间:2011-02-22 12:29:50

标签: javascript jquery html forms

$(".panel_wager_container input").change(function(event)
{
    var wager = $(this).val();
    var multiplier = $('#multiplier').html();
    var limit = 15.00;
    var winnings = $("#potential_winnings").val();
    if(wager - 0 == wager && wager.length > 0) {
        if(winnings <= limit) {
            $("#potential_winnings").html(Math.round((wager * multiplier) * 100) / 100);
        } else {
            $("#potential_winnings").html = limit;
            $(".panel_wager_container input").html(Math.round((limit / multiplier) * 100) / 100);
        }
    } else {
        $("#potential_winnings").html('0.00');
    }
});

我不确定为什么这个jquery代码不起作用。目标是获取输入变量并通过乘数将其倍增以计算出奖金。我想将最高奖金限制在15.00。如果奖金低于限制更新#potential_winnings。如果奖金高于限额,则将#potential_winnings设置为限制变量,然后根据potential_winnings计算投注并设置该投注。

我已经尝试尽可能地调试这个,但我无法找到正确的方法来做到这一点。不起作用的线条似乎是: var winnings = $(“#potential_winnings”)。val(); 奖金永远不会评估为低于限制。如果我用低于限制的变量替换奖金,它会正确评估。

和: $(“。panel_wager_container input”)。html(Math.round((limit / multiplier)* 100)/ 100); 此行不会对所选元素输出任何更改。

这是它正在处理的html脚本:

<div class="panel_wager_inform">Maximum Wager: 170.00</div><br /> 
                    <div class="panel_wager_container"> 
                    <img src="/img/rounded/input/left.png" class="left" alt="" /><img src="/img/rounded/input/right.png" class="right" alt="" /><div class="input text required"><label for="BetWager">Wager</label><input name="data[Bet][wager]" type="text" value="170.00" id="BetWager" /></div>                        
                    </div><br /> 
                    <div class="clear"></div> 
                    <strong>Multiplier:</strong> <span id="multiplier">11.85</span>x<br /><br /> 
                    <strong>Potential Winnings:</strong> 
                    $<span id="potential_winnings">2,014.84</span> 

非常感谢任何帮助。谢谢。

更新:这是我在此主题的指导下使用的解决方案。谢谢你的帮助。

    $(".panel_wager_container input").change(function(event)
{
    var wager = $(this).val();
    var multiplier = $('#multiplier').html();
    var limit = 15.00;
    var winnings = Math.round((wager * multiplier) * 100) / 100;
    if(wager - 0 == wager && wager.length > 0) {
        if(winnings <= limit) {
            $("#potential_winnings").html(Math.round((wager * multiplier) * 100) / 100);
        } else {
            $("#potential_winnings").html(limit);
            $(".panel_wager_container input").val(Math.round((limit / multiplier) * 100) / 100);
        }
    } else {
        $("#potential_winnings").html('0.00');
    }
});

2 个答案:

答案 0 :(得分:1)

.val()仅适用于输入控件。您需要使用.text()

获取内容
var winnings = $("#potential_winnings").text();

此外,您应该通过调用parseInt()或使用+将返回的String“强制转换”为整数。

if(+winnings <= limit) {
}

multiplier变量也是如此。例如:

$(".panel_wager_container input").change(function(event)
{
    var wager       = +$(this).val(),
        $multiplier = $('#multiplier'),
        $potentialwinnings = $("#potential_winnings"),
        multiplier  = $multiplier.html(),
        limit       = 15.00,
        winnings    = +$("#potential_winnings").text();

    if(wager.length > 0) {
        if(winnings <= limit) {
            $potentialwinnings.html(Math.round((wager * multiplier) * 100) / 100);
        } else {
            $potentialwinnings.html = limit;
            $(".panel_wager_container input").html(Math.round((limit / multiplier) * 100) / 100);
        }
    } else {
        $potentialwinnings.html('0.00');
    }
});

答案 1 :(得分:0)

  1. #potential_winnings - 您应该使用html()来设置或从中获取值。
  2. 使用该值时,也可以将其与parseFloat()
  3. 一起使用

    最后这个对我有用:

    <script>
    $(".panel_wager_container input").change(function(event)
    {
        var wager = $(this).val();
        var multiplier = $('#multiplier').html();
        var limit = 15.00;
        var winnings = $("#potential_winnings").html();
        if(wager - 0 == wager && wager.length > 0) {
            if(parseFloat(winnings) <= limit) {
                $("#potential_winnings").html(Math.round((wager * multiplier) * 100) / 100);
            } else {
                $("#potential_winnings").html(limit);
                $(".panel_wager_container input").html(Math.round((limit / multiplier) * 100) / 100);
            }
        } else {
            $("#potential_winnings").html('0.00');
        }
    });
    
    </script>
    

    希望这有帮助。