Javascript 单击TR时如何获取隐藏的TD值

Javascript 单击TR时如何获取隐藏的TD值,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在尝试制作一个基于web系统的任务管理器,它可以监控工作中的任务,我使用html和php。 我试图显示表中的所有任务,当我单击一个任务(行)时,我想获得一个隐藏的td值(任务id),并将其作为arg发送到另一个页面以获取有关该任务的更多信息。 我在网上搜索了怎么做,但我真的不知道如何使用我的桌子。 这是我的表格代码 <table id="thickets_show"> <tr id="show_t

我正在尝试制作一个基于web系统的任务管理器,它可以监控工作中的任务,我使用html和php。 我试图显示表中的所有任务,当我单击一个任务(行)时,我想获得一个隐藏的td值(任务id),并将其作为arg发送到另一个页面以获取有关该任务的更多信息。 我在网上搜索了怎么做,但我真的不知道如何使用我的桌子。 这是我的表格代码

                   <table id="thickets_show">
                    <tr id="show_ticket_table_header">
                        <td>Work Week</td>
                        <td>Task Submited Date</td>
                        <td>Task Submited Time</td>
                        <td>Task</td>
                        <td>Project</td>
                        <td>Task Owner</td>
                        <td>Task Assigend to</td>
                        <td>Priority</td>
                        <td>Status</td>
                        <td>Task Total Work Time</td>
                        <td>Task Due Date</td>
                        <td>Task Finish Date</td>
                        <td>Team</td>
                    </tr>';
                    foreach ($tasks as $key => $value) {
                        if ($value['ticket_status']=="done")
                            echo '<tr id="done_ticket" >';
                        elseif ($value['ticket_priority']=="high")
                             echo '<tr id="high_ticket" class="ticket_raw">';
                        else
                            echo '<tr class="ticket_raw">';
                        echo '
                                <td>
                                    '.$value['work_week'].'
                                </td>
                                <td>
                                    '.$value['ticket_date'].'
                                </td>
                                <td>
                                    '.$value['ticket_time_submit'].'
                                </td>
                                <td>
                                    '.$value['ticket_request'].'
                                </td>
                                <td>
                                    '.$value['ticket_project'].'
                                </td>
                                <td>
                                    '.$value['ticket_onwer'].'
                                </td>
                                <td>
                                    '.$value['ticket_assigned_user'].'
                                </td>
                                <td>
                                    '.$value['ticket_priority'].'
                                </td>
                                <td>
                                    '.$value['ticket_status'].'
                                </td>
                                <td>
                                    '.$value['ticket_worktime'].'
                                </td>
                                <td>
                                    '.$value['ticket_due_date'].'
                                </td>
                                <td>
                                    '.$value['ticket_finish_date'].'
                                </td>
                                <td>
                                    '.$value['team'].'
                                </td>
                                <td style="display:none;" id="ticket_id class="divOne">
                                    '.$value['id'].'
                                </td>
                              </tr>

td
具有id
ticket\u id
,因此您可以使用
document.getElementById()

var td=document.getElementById('ticket_id');
var值=td.textContent;
或者,使用jQuery:

var td=$(“#票证id”);
var value=td.text();

有一个小问题需要纠正,然后您可以轻松地完成这项工作:

echo'
无效-如果您在这样的循环中创建多个元素,您不能给它们所有相同的“id”,这在HTML规范中是非法的。您必须改用类

请按照以下方式稍微重写:

foreach ($tasks as $key => $value) {
  echo '<tr data-id="'.$value['id'].'" class="ticket ';
  if ($value['ticket_status']=="done")
    echo 'done_ticket';
  elseif ($value['ticket_priority']=="high")
     echo 'high_ticket ticket_raw';
  else
    echo 'ticket_raw';
  echo '">';
  echo '
    <td>
    //etc...
最后,您可以删除此代码:

<td style="display:none;" id="ticket_id class="divOne">
  '.$value['id'].'
</td>

$('tr')。在('click',function()上{
var hidden_items=$(this.find('.td_hidden');
$。每个(隐藏项,函数(k,v){
console.log($(v.text());
})
})
html,正文{
身高:100%;
保证金:0自动;
填充:0px;
}
运输署{
边框:1px纯黑;
}

专栏1
专栏2
第3栏
专栏4
价值01
价值02
价值03
价值04
值\u隐藏\u 01
值\u隐藏\u 02
价值11
价值12
价值13
价值14
值\u隐藏\u 11
值\u隐藏\u 12

$('tr td:hidden')
您缺少一个双引号:
id=“ticket\u id class=”
。我试过了,它总是让我得到相同的值,因为您使用了id选择器,并且id在上下文中应该是唯一的是的,这是真的。我建议您使用ADyson建议的内容。@wafihsn没问题,很高兴它对您有所帮助。如果您不打算显示“td”,有什么意义?td的唯一目的是向表中添加内容。如果它永远不会显示,并且确实包含补充数据,那么它只是滥用了该元素的用途。而是在另一个元素上使用隐藏字段或数据属性。@ADyson你是wright,当我们只想保存一个属性的数据时,我们可以将“数据属性”属性添加到“tr”元素,但当我们想保存多个属性时,如何播放?使用多个数据属性。e、 g.“数据id”、“数据名称”等,任何需要的内容。
$(".ticket").click(function(event) {
  var id = $(this).data("id"); //gets the data-id value from the clicked tr
  window.location.href = "ticket.php?id=" + id; //example URL to redirect to, passing the ID from the tr
});
<td style="display:none;" id="ticket_id class="divOne">
  '.$value['id'].'
</td>