Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我希望有人能找出为什么这个函数将错误的ID号传递给url_Javascript - Fatal编程技术网

Javascript 我希望有人能找出为什么这个函数将错误的ID号传递给url

Javascript 我希望有人能找出为什么这个函数将错误的ID号传递给url,javascript,Javascript,我有一个动态填充的表,每行有12个单元格。所需的行为是,当单击行中前11个单元格中的任何一个时,将打开一个页面,其中包含有关所单击行中项目的更多详细信息。我遇到的问题是,变量id第4行中保存的编号始终是表最后一行的id编号。(当处理程序写入单元格时)我已经检查了变量的内容,这正是我所期望的,直到这一行之后:rows[I].cells[j].onclick=function(){ 返回函数() {j循环的目的是循环行的前11个单元格。第12个单元格包含到另一个routene的链接 function

我有一个动态填充的表,每行有12个单元格。所需的行为是,当单击行中前11个单元格中的任何一个时,将打开一个页面,其中包含有关所单击行中项目的更多详细信息。我遇到的问题是,变量id第4行中保存的编号始终是表最后一行的id编号。(当处理程序写入单元格时)我已经检查了变量的内容,这正是我所期望的,直到这一行之后:rows[I].cells[j].onclick=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怪异的部分”。