如何使用javascript检测任何表中的更改?

时间:2013-06-12 11:34:35

标签: javascript html html-table

我有一个表<td>值根据表单中给出的输入而变化,我使用Tangle来制作一个被动文档。是否可以检测<td>的值是否变为任何负数?如果是这样,那么它必须将其颜色改为红色!
Javascripting或html标签本身可以解决这个问题吗? 请帮忙!
我的变化将是profitLossIn1,profitLossIn2,profitLossIn3 这是我的HTML:

<table>
    <tr>
        <th>Name</th>
        <th>Cost</th>
        <th>Revenue</th>
        <th>Result Profit/Loss</th>
    </tr>
    <tr>
        <td><input id='NameInn1' type='text' NAME="NameInn1"></td>
        <td><span class="TKNumberField" data-var="CostIn1"></span></td>
        <td><b data-var="revenueIn1"> Cost</b></td>
        <td><b data-var="profitLossIn1"> dollars</b></td>
    </tr>
    <tr>
        <td><input id='NameInn2' type='text' NAME="NameInn2"></td>
        <td><span class="TKNumberField" data-var="CostIn2"></span></td>
        <td><b data-var="revenueIn2"> Cost</b></td>
        <td><b data-var="profitLossIn2"> dollars</b></td>
    </tr>
    <tr>
        <td><input id='NameInn3' type='text' NAME="NameInn3"></td>
        <td><span class="TKNumberField" data-var="CostIn3"></span></td>
        <td><b data-var="revenueIn3"> Cost</b></td>
        <td><b data-var="profitLossIn3"> dollars</b></td>
    </tr>

    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td><b data-var="totalRevenueIn"> dollars</b></td>
    </tr>
</table>

我正在尝试这个:

var inputs = document.getElementById("profitLossOut1");
console.log(inputs.value);
inputs.onchange = function () {
    console.log("Checking IF condition");
    if ((parseInt(this.value)).match("-") == true) this.parentNode.style.background = "red";
};

4 个答案:

答案 0 :(得分:3)

也许这会有所帮助:http://jsfiddle.net/tz7WB/

JQUERY CODE

$(":input").on("change", function () {
    if (parseInt($(this).val()) < 0) $(this).closest("td").css("background", "red");
})

尝试在输入中输入任何负数


使用纯js:http://jsfiddle.net/tz7WB/1/

JS CODE

var inputs = document.getElementsByTagName("input");
for (var x = 0; x < inputs.length; x++) {
    inputs[x].onchange = function () {
        if (parseInt(this.value) < 0) this.parentNode.style.background = "red";
    };
}

答案 1 :(得分:1)

假设我正确理解了您的问题,您不想检查输入的负值,您想要检查纠结生成的文本的负值价值观。

此代码应该更符合您的要求,只要data-var元素的文本内容以数字开头,它就会起作用。如果没有,则需要改进数字解析逻辑:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("input").change(function(e) {
        var $target = $(e.target);
        var checkNeg = function(c) {
            for(var i=0,$ci; i<c.length; i++) {
                $ci = $(c[i]);
                if(parseInt($ci.text()) < 0) $ci.css("color", "red");
                else $ci.css("color", "black");
            }
        };
        checkNeg($target.parents("table").find("[data-var]"));
    });
});
</script>

答案 2 :(得分:0)

考虑将knockout.js用于您的场景,您可以使用它根据底层数据轻松设置UI元素的格式。看一下示例:http://knockoutjs.com/examples/

答案 3 :(得分:0)

为每个输入框添加jquery更改事件。以下是示例代码

$("#NameInn1").change(function(){
   var input = $("#NameInn1").val();
   if(input<10){
     $("#NameInn1").css("background-color","red");
   }
});