它不起作用,因为您提供的函数click具有对变量的持久引用,而不是创建函数时的副本。因此,当点击发生时,无论是哪一个,它都会看到then的值(可能是)。ii x.length
要修复它,在这种特定情况下最简单的方法是使用行的id属性,因为您将信息保存到行:
$("#"+i).click(function(){ reWrite(this.id); return false; });
但是,我对您的代码完全正常工作感到有些惊讶,因为您id在 CSS 选择器中使用了无效值。尽管您可以id在 HTML 中具有以数字开头的值,但它们在 CSS 中无效,因此您与$()( #0,#1等) 一起使用的选择器是无效的。jQuery 为您容忍它们(可能是偶然的,因为它优化了对调用的调用getElementById),但我强烈建议不要这样做。
解决问题的各种其他方法(而不是使用id):
- 使用额外的- data参数 jQuery 让你为事件指定:
 - $("#"+i).on('click', i, function(e){ reWrite(e.data); return false; });
 
- 让点击处理程序关闭一个不同的东西- i,而不是改变:
 - $("#"+i).on('click', i, buildHandler(i));
//...outside the loop:
function buildHandler(index) {
    return function() {
        reWrite(index);
        return false;
    };
}
 
- 在行上使用- data-*属性(但这很像使用- id)。
 
- 使用techfoobar 建议的旧式- onxyz处理程序(但没有不必要的,这与在 jQuery 中的含义不同):- return false
 - document.write("<tr id='"+i+"' onclick='reWrite("+i+");'><td>");
 - 我不是粉丝,但这是一种选择。 
document.write最后:如果你可以避免它,我建议不要使用它,而且你几乎总是可以避免它。