使用多个动态表单击单元格更改值

时间:2014-04-15 20:04:24

标签: javascript jquery cell

jsfiddle.net file

$(document).ready($(function change_cell_content() {
            $("td").on("click",
                function(){
                    var $cell_id_ref = $(this).attr('cellID');
                    var $table_id_ref = $(this).parent().parent().parent().attr('tableID');
                    var newValue;

                    var currentValue = document.querySelector('[cellID="' + $cell_id_ref + '"]').innerHTML;
                    alert(currentValue);

                    var changeValue = prompt("Enter a new value. (Current " + currentValue + ")");
                    if ( changeValue!==null ) {
                        newValue = changeValue;
                        document.querySelector('[cellID="' + $cell_id_ref + '"]').innerHTML = newValue;
                    }
                });
        }));

第一个表格完美,其他三个表格没有。

单击任何单元格。警报会显示您点击的内容的tableID。将弹出一个提示并要求输入新值(在提示中说明当前值)。这就是问题,即使我使用currentValuecellID($cell_id_ref)来尝试将其引导到其他表,tableID($table_id_ref)变量也只能从第一个表中获取。

任何帮助或评论将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以简化代码并使用jQuery代替querySelectorAll

$(function change_cell_content() {
    $("td").on("click", function () {

        var cell_id_ref = $(this).attr('cellID');
        var $table = $(this).closest('table');
        var newValue;

        var currentValue = $(this).html();
        alert(currentValue);

        var changeValue = prompt("Enter a new value. (Current " + currentValue + ")");
        if (changeValue !== null) {
            $table.find('[cellID="' + cell_id_ref + '"]').text(changeValue);
        }
    });
});

你问题出在这一行:

document.querySelector('[cellID="' + $cell_id_ref + '"]').innerHTML = ...

您应该在当前表中选择一个单元格,但是上面代码总是从第一个表中选择第一个单元格。

演示:http://jsfiddle.net/waH5S/3/