当表更改内容时调用Javascript函数

时间:2015-01-20 11:53:59

标签: javascript jquery

我有一个Javascript代码,它将数字格式化为货币。所有内容都在桌面上。目前,我在每个money都有一个班级<tr>,我会在细胞发生变化时调用该函数。仅供参考,所有细胞在表格中同时发生变化。

var spans = document.getElementsByClassName("money");
for (var i = 0; i < spans.length; i++) {
    var newText = spans[i].innerHTML.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    spans[i].innerHTML = newText;
}

有没有办法,而不是在每个单元格上都有相同的类,并在所有单元格上捕获一个事件,在表格上执行并获得相同的结果?例如,

$("#mytable").on('change', function() {
  // put my function here and apply to every cell
});

更新:我添加了DOMSubtreeModified并尝试遍历表格中的每个单元格。但是,即使我在控制台上没有任何错误,它似乎也不起作用。

<script type="text/javascript">
    $("#resultstable").bind("DOMSubtreeModified", function() {

      $('#resultstable tr').each(function() {
        $('td').each(function (i, cell) {
          cell.innerHTML.replace(/\B(?=(\d{3})+(?!\d))/g, ",");    
      });
    });
    });  

</script>

3 个答案:

答案 0 :(得分:6)

尝试使用DOMSubtreeModified之类的,

$("#mytable").bind("DOMSubtreeModified", function() {
    alert("Hurrey table changed");
});

阅读Dom-event-javascript article

$(function(){
    $('button').on('click',function(){
        $('#mytable').append('<tr><td>Next '+($('#mytable tr').length+1)+'</td></tr>');
    });
    $("#mytable").bind("DOMSubtreeModified", function() {
        alert("Hurrey table changed");
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable">
    <tr>
        <td>Next 1</td>
    </tr>
</table>
<br/>
<button>Test</button>

答案 1 :(得分:0)

您可以使用setInterval()来监控表。

setInterval(function() { check(); }, 1000); //Call check() function every 1s. 

在check()中你会有一些比较的逻辑。

答案 2 :(得分:0)

$(function() {
    $(".money").each(function(indexOfElement, elementValue) {
        for (var i = 0; i < elementValue.length; i++) {
            var newText = elementValue[i].innerHTML.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
            $(elementValue).html(newText);
        }
    })

});

上面的代码迭代每个具有“money”类的元素,并用货币文本替换文本。页面准备好后脚本将运行