Javascript 我希望有人能找出为什么这个函数将错误的ID号传递给url
我有一个动态填充的表,每行有12个单元格。所需的行为是,当单击行中前11个单元格中的任何一个时,将打开一个页面,其中包含有关所单击行中项目的更多详细信息。我遇到的问题是,变量id第4行中保存的编号始终是表最后一行的id编号。(当处理程序写入单元格时)我已经检查了变量的内容,这正是我所期望的,直到这一行之后:rows[I].cells[j].onclick=function(){Javascript 我希望有人能找出为什么这个函数将错误的ID号传递给url,javascript,Javascript,我有一个动态填充的表,每行有12个单元格。所需的行为是,当单击行中前11个单元格中的任何一个时,将打开一个页面,其中包含有关所单击行中项目的更多详细信息。我遇到的问题是,变量id第4行中保存的编号始终是表最后一行的id编号。(当处理程序写入单元格时)我已经检查了变量的内容,这正是我所期望的,直到这一行之后:rows[I].cells[j].onclick=function(){ 返回函数() {j循环的目的是循环行的前11个单元格。第12个单元格包含到另一个routene的链接 function
返回函数() {j循环的目的是循环行的前11个单元格。第12个单元格包含到另一个routene的链接
function addRowHandlers(){//adds onclick handeler to the first 11 cells of each row. cell 0 contains id number.
var rows = document.getElementById("WDTable").rows;
for (i = 1; i < rows.length; i++) {
id = rows[i].cells[0].innerHTML;
for (j = 0; j < 11; j++) {
rows[i].cells[j].onclick = function(){
return function()
{
//var id = rows[i].cells[0].innerHTML; tried to put this inside the j loop hoping it might fix my problem.
//if I uncomment line above get an "Uncaught TypeError: Cannot read property '0' of undefined"
window.open("https://fwdb.link/weapons/"+id+";", "Details",height=757, width=900");
};}(rows[i]);
}
}
}
window.onload = addRowHandlers();
函数addRowHandlers(){//将onclick Handler添加到每行的前11个单元格中。单元格0包含id号。
var rows=document.getElementById(“WDTable”).rows;
对于(i=1;i
所有处理程序都在同一id
变量上单击关闭。在这些处理程序执行时,该变量的值将是最后一行分配给它的值
您应该使用let
声明id
,以便将其绑定到最外层的for循环
块,这样循环的每次迭代——以及给定行的每组处理程序——都有自己的id
变量副本。所有处理程序都在同一id
变量上单击处理程序在这些处理程序执行时,该变量的值将是最后分配给它的值——在您的例子中是最后一行
您应该使用let
声明id
,以便将其绑定到最外层的for循环
块,这样循环的每次迭代(以及给定行的每组处理程序)都有自己的id
变量副本。我不确定100%,但可能是因为执行上下文,请尝试包装在IIFE中,如果它对你没有任何意义,我建议你在代码执行时检查js是如何在引擎盖下工作的。建议“在udemy上使用javascript编写奇怪的部分”。我不确定100%,但可能是因为执行上下文的缘故,试着在IIFE中包装它,如果它对你没有任何意义,我会这样做建议在代码执行时检查js是如何工作的。建议使用“JavaScriptthe怪异的部分”。