Javascript 单击将行号发送到另一个函数
我有一个表格,每一行都需要一个点击功能 我想将行号和文本发送到另一个函数 当我点击一行时,它会给出正确的文本,但对于每一行,它会给出总行数。如何给出当前单击行的编号Javascript 单击将行号发送到另一个函数,javascript,Javascript,我有一个表格,每一行都需要一个点击功能 我想将行号和文本发送到另一个函数 当我点击一行时,它会给出正确的文本,但对于每一行,它会给出总行数。如何给出当前单击行的编号 var table = document.getElementById("orders"); if (table != null) { for (var i = 0; i < table.rows.length; i++) { for (var j = 0; j < table.rows[i].c
var table = document.getElementById("orders");
if (table != null) {
for (var i = 0; i < table.rows.length; i++) {
for (var j = 0; j < table.rows[i].cells.length; j++)
table.rows[i].cells[j].onclick = function () {
tableText(this, i);
};
}
}
function tableText(tableCell, i) {
alert(tableCell.innerHTML + i);
}
var table=document.getElementById(“订单”);
如果(表!=null){
对于(var i=0;i
您在JavaScriptvar
范围界定方面遇到了一个常见问题。问题是变量的作用域是for
循环本身,而不是块。这意味着变量会随着的的每一次进一步迭代而不断变化
使用ES6let
,您可以轻松解决此问题:
const table = document.getElementById("orders");
if (table != null) {
for (let i = 0; i < table.rows.length; i++) {
for (let j = 0; j < table.rows[i].cells.length; j++)
table.rows[i].cells[j].onclick = function () {
tableText(this, i);
};
}
}
const table=document.getElementById(“订单”);
如果(表!=null){
for(设i=0;i
(为了获得最佳实践,我更改了其他变量,但这并不是必须的。)
如果您不能使用ES6,您可以使用如下自动执行功能:
for (var i = 0; i < table.rows.length; i++) {
for (var j = 0; j < table.rows[i].cells.length; j++) {
table.rows[i].cells[j].onclick = (function (i) {
return function () {
tableText(this, i);
};
})(i);
}
}
for(变量i=0;i
不过没那么好
另请参见:在不深入讨论的情况下,我怀疑警报
调用同时评估innerHTML
和I
,因此您在警报
上得到的号码不正确
我也会改变:
tableText(this, i);
明说
tableText(table.rows[i].cells[j], i);
只是为了避免任何可能的混乱这可能是对javascript/html文件本身的评估