我应该会得到一个唯一的时间卡,当我在特定的td上徘徊时,我会得到最后一个id。我试着用id代替类,但这也不起作用。非常感谢。

<?php include "../db_connection302.php" ; ?>
<?php

         echo"<tr>" ;
         echo"<th class='leave-heading'>Particular </th>" ;
         echo"</tr>" ;


         // GENERATING ALL PENDING ATTENDANCE FOR APPROVAL
         $query  = "SELECT * FROM ".$_SESSION['$company_code']."_tms WHERE  status = 'Pending' AND (particular = 'Log In' || particular = 'Log Out' || particular = 'Log In/Out' || particular = 'OB' || particular = 'Offsetting' ) ";
         $result_approval = mysqli_query($connection302,$query) or die(mysql_error());
         while($row_approval = mysqli_fetch_array($result_approval))  {

         echo "<tr>" ;
         echo "<td class='reason'>".$timecard_id_overtime = $row_approval['timecard_id']."</td>" ;
         echo "</tr>" ;

             }

?>

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
 <script>


     var timecard_id = '<?php  echo $timecard_id_overtime  ; ?>' ;


     $(document).ready(function() {


             $('.reason').hover(function() {

                 alert(timecard_id) ;


             });



         });



 </script>

最佳答案

在您的while循环中,您将覆盖循环的每个迭代的相同值,因此它始终是循环完成时的最后一个值。
$timecard_id_overtime的值每次都将被覆盖。

//first iteration
//$timecard_id_overtime is set to 1

//second iteration
//$timecard_id_overtime is set to 2

//third iteration
//$timecard_id_overtime is set to 3

……等等。
实现目标的一种方法是使用$timecard_id_overtime为每个循环设置id,以便正确的id与正确的元素相关联。您可以将该id设置为<td>元素的属性,而不是PHP变量。然后JQuery可以很容易地得到这个值。
...
PHP
...
 while($row_approval = mysqli_fetch_array($result_approval))  {

     echo "<tr>" ;
     echo "<td class='reason' timecard_id='".$row_approval['timecard_id']."'></td>" ;
     echo "</tr>" ;

         }
...
Javascript
...
 $(document).ready(function() {

         $('.reason').hover(function() {
             alert($(this).attr('timecard_id')) ;
         });
     });
...
...

10-07 19:38
查看更多