无法使用jQuery提取值

时间:2016-11-02 03:31:06

标签: javascript jquery

我有一个函数来计算3个输入框之一何时发生变化,然后显示答案。我可以在发生变化时触发该功能,但我无法从每个输入中获取值。下面是html和js片段。

this

JS:

HTML:
    <div>
        <table>
                <tr>
                    <th></th>
                    <th>Base</th>
                    <th class="gen-specific g3 g4 g5 g6">IVs</th>
                    <th class="gen-specific g3 g4 g5 g6">EVs</th>
                    <th></th>
                    <th></th>
                </tr>
                <tr class="hp" onchange="hp_calculator()">
                    <td>
                        <label>HP</label>
                    </td>
                    <td>
                        <input class="base" value="100" />
                    </td>
                    <td class="gen-specific g3 g4 g5 g6">
                        <input class="ivs calc-trigger" value="31" />
                    </td>
                    <td class="gen-specific g3 g4 g5 g6">
                        <input class="evs calc-trigger" type="number" min="0" max="252" step="4" value="0" />
                    </td>
                    <td><span class="total">341</span>
                    </td>
                    <td></td>
                </tr>
        </table>
    </div>

1 个答案:

答案 0 :(得分:2)

首先this将成为窗口,而不是元素。将元素传递到处理程序中,然后使用参数。

<tr class="hp" onchange="hp_calculator(this)">

然后,您需要更改多个类选择器的类选择器.class1.class2,然后.text()更改span元素的文本。最后一点是您"s"ivs中的evs

function hp_calculator(ele) {  
    var hp = $(ele).find(".base").val()*$(ele).find(".ivs.calc-trigger").val()+$(ele).find(".evs.calc-trigger").val();

    $(ele).find(".total").text(hp);
}

Demo

注意

通过内联方式提供事件处理程序通常是不好的做法。相反,我建议您直接在JavaScript中附加它们,这样this将按预期工作。这是一个如何在jQuery(demo)中执行此操作的示例:

$('.hp').change(function(){
    var hp = $(this).find(".base").val()*$(this).find(".ivs.calc-trigger").val()+$(this).find(".evs.calc-trigger").val();

    $(this).find(".total").text(hp);
});