Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 为什么可以';我不能让每个tr标签都有一个事件来工作吗?_Javascript_Jquery_Html Table_Event Handling - Fatal编程技术网

Javascript 为什么可以';我不能让每个tr标签都有一个事件来工作吗?

Javascript 为什么可以';我不能让每个tr标签都有一个事件来工作吗?,javascript,jquery,html-table,event-handling,Javascript,Jquery,Html Table,Event Handling,我试图使一个大表的每个tr在单击时切换其td中的一个div,下面是我所做的: for( i = 2 ; i < trLen; i++ ){ var id = $("td.idout", "tr:eq(" + i + ")").text(); $("tr:has(div#" + id + ")").click(function(){ $("div #"+ id).toggle(); }); } (i=2;i

我试图使一个大表的每个tr在单击时切换其td中的一个div,下面是我所做的:

for( i = 2 ; i < trLen; i++ ){
   var id = $("td.idout", "tr:eq(" + i + ")").text();
   $("tr:has(div#" + id + ")").click(function(){
       $("div #"+ id).toggle();
   });
}
(i=2;i{ var id=$(“td.idout”,“tr:eq(“+i+”)).text(); $(“tr:has(div#“+id+”))。单击(function(){ $(“div#“+id).toggle(); }); }
我使每个div的id与条目相同(在上面的
var id
引用的选择中输出)。我已经测试了每一个选择,他们都是完美的。我的逻辑一定有问题,因为它根本不起作用。它根本不起任何作用。

div
#
符号之间有一个冗余空间,该符号不是选择具有特定
id
的div,而是选择div中具有
id
的元素:

尝试更改:

$("div #"+ id).toggle();
与:

该函数声明了作用域变量,与您可能期望的块作用域相反。因此,您只有一个
id
,它由
for
循环的每个迭代共享。而且,由于循环完成后将调用
click
函数,
id
将始终具有循环中此选择器的最后一个值:

...function(){
    $("div#"+ id).toggle();
}...
您可以使用一个立即调用的函数来解决此问题,该函数将为每次迭代指定变量:

for( i = 2 ; i < trLen; i++ ) {
    (function () {
        var id = $("td.idout", "tr:eq(" + i + ")").text();
        ...
    })();
}

@GiovanniDiToro你能发布html吗?
for( i = 2 ; i < trLen; i++ ) {
    (function () {
        var id = $("td.idout", "tr:eq(" + i + ")").text();
        ...
    })();
}
for( i = 2 ; i < trLen; i++ ) {
    let id = $("td.idout", "tr:eq(" + i + ")").text();
    ...
}