Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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的id不工作_Javascript_Html - Fatal编程技术网

Javascript 获取每个tr的id不工作

Javascript 获取每个tr的id不工作,javascript,html,Javascript,Html,我在表中获取tr id的代码不起作用 我从mysql数据库中检索表的数据并填充表。但是为了更好、更容易阅读,让我们假设这里有一张表: <table> <tr id = "1" class = "tablerow"> <td> Your awesome </td> </tr> <tr id = "2" class = "tablerow"> <td> Your great

我在表中获取tr id的代码不起作用

我从mysql数据库中检索表的数据并填充表。但是为了更好、更容易阅读,让我们假设这里有一张表:

<table>
   <tr id = "1" class = "tablerow">
      <td> Your awesome </td>
   </tr>
   <tr id = "2" class = "tablerow">
      <td> Your great </td>
   </tr>
   <tr id = "3" class = "tablerow">
      <td> Your amazing </td>
   </tr>
</table>

但它不起作用,只是一个空字符串。为什么?

请尝试此代码,希望它可以帮助您:

$(document).on("click",".tablerow",function(event){ 
    var id = this.id;
    alert(id);
});
如果它仍然不起作用,请尝试检查jquery是否已声明。像这样:


享受吧

尝试将代码更改为下一个

$(".tablerow").click(function(event){
    var clicked = $(this),
        id;
    if(clicked.attr('id')){
        id = clicked.attr('id');          
    }
    else{
        id = clicked.parent().attr('id');
    }

    alert(id);
});
你应该使用

$(".tablerow").click(function(event){
        var id = $(this).attr('id');
        alert(id);
    });
$(this) //it will select the DOM element as a Jquery object.
解释

当您试图访问click事件中的
这个
时,您只是在访问元素,但希望选择该DOM元素,因此应该使用

$(".tablerow").click(function(event){
        var id = $(this).attr('id');
        alert(id);
    });
$(this) //it will select the DOM element as a Jquery object.

然后应该使用Jquery方法访问特定DOM元素的属性。

假设页面上只有一个表:

document.getElementsByTagName("tr")[index].id;
不过,您最好给您的表一个id,然后按如下方式获取您的行:

<table id="tableId">
   <tr id = "1" class = "tablerow">
      <td> Your awesome </td>
   </tr>
   <tr id = "2" class = "tablerow">
      <td> Your great </td>
   </tr>
   <tr id = "3" class = "tablerow">
      <td> Your amazing </td>
   </tr>
</table>
你应使用:

$(".tablerow").click(function(e) {

   var proxy = this.id;
   id = this.id;
   console.log(id);

});

为什么要把事情复杂化?如果还有更短的代码?谢谢你,先生。。谢谢你的这个!这段代码运行得很好。谢谢你,先生!这件事我已经坚持了一个小时了。非常感谢。@DEV'1 Makudex在他的回答中所做的是所谓的“委托绑定”,这基本上意味着他将点击监听器连接到比点击监听器更高级别的元素上,并等待点击事件冒泡并检查其来源。但是,为了提高性能,最好将层次结构中的委托尽可能地连接到实际元素,这样单击事件就不必冒泡得太远。我假设您正在以某种方式使用ajax加载此数据,我建议将事件连接到pageload上最接近的父级上,而不是
文档
。您使用的是哪个jquery版本?检查这把小提琴。您的代码在这里工作得非常好:我同意@xyz,但可能它碰巧与他的jquery冲突,或者他忘记声明它。你觉得怎么样?@Makudex:是的,我猜,他没有为
tr
声明id属性。除此之外,它还可以正常工作。@xyz:是的,我想是的。。