$(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
。将弹出一个提示并要求输入新值(在提示中说明当前值)。这就是问题,即使我使用currentValue
和cellID($cell_id_ref)
来尝试将其引导到其他表,tableID($table_id_ref)
变量也只能从第一个表中获取。
任何帮助或评论将不胜感激。
答案 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 = ...
您应该在当前表中选择一个单元格,但是上面代码总是从第一个表中选择第一个单元格。