获取div内的表中的单元格的id(JS和HTML)

时间:2009-10-24 14:09:34

标签: javascript html ajax

您好我有一个PHP脚本,根据特定条件绘制表格。绘制表时,它位于一个名为“window”的div中,该表称为“visi”,然后我想使用下面的代码获取表中每个单元格的id。我可以得到类名称没有问题,但从id得到绝对没有。谁能让我知道我做错了什么?我在一个不在div内的表上尝试了类似的代码,它工作正常。任何帮助都会很棒,我希望代码有意义。

function confirm_allocate() {
var msg = ""   
var tab = document.getElementById('visi');
var r = tab.rows.length

for (i=0; i<r; i++){
cc = tab.rows.cells.length
         for (col=0; col<cc; col++){
            x=document.getElementById('visi').rows.cells;   

            iden = x[col].className
            ref =  x[col].id

            msg += "Class =" + iden + " ///    Id =" + ref +  "\r" 
         } 
} 
alert (msg ) 
}

如果它有助于这是绘制表的代码(但在获取表的信息后使用js / ajax调用)

<?php

$table = ""  ;
include '../database_sql/dbconnect.php' ;
include '../functions/job_details.php';
include '../functions/check_date.php';
include '../functions/stock_list.php' ; 
include '../functions/allocated_on_date.php' ; 

$jobdate = $_GET['jobdate'] ;
$jobnumber = $_GET['jobnumber'] ;
$jobname = $_GET['jobname'] ;

$screens = screens_per_job($jobnumber,$size) ;

$table =  "<h2 align= 'center' > $jobname (Job Number $jobnumber) : Screens required : $screens </h2>"  ;
$table .= "<table id='visi' width='480px'  align='center'  cellspacing='1'  cellpadding='1'   border='1' ><tr>"  ;

// get stock list from DB 
stock_list() ; 
$len = count( $stock);

$evresult = mysql_query("SELECT * FROM event WHERE jobnumber = '$jobnumber' ")  ;
$event_row = mysql_fetch_array($evresult);

for ($counter = 0; $counter < $len; $counter++) {
      $item =  $stock[$counter] ;
      $items = $item . "s" ; 
      $booked_for_job = $event_row[$items] ;
      $result = mysql_query("SELECT * FROM $item ")  ;
      allocated_on_date($jobdate) ; // function 

         if ($booked_for_job) {   
         $count =  1 ;
         $table .= "<td >$item<br> [$booked_for_job to Allocate] </td> " ;

               WHILE ($row = mysql_fetch_array($result)) { ;
               $booked_job = $screens[$item][$count]["job"] ;  // from the   allocated_on_date($jobdate)  function  
               $description = $row['trailer_id'];
               $class = $items ;
               $id_items = $items . $count ;
               $count ++ ;   

                        if ($booked_job == $jobnumber) {  // allocated to current job
                        $table .= "<td class='truckbox' > <div class='$class' id='$id_items' onClick='allocate(\"$booked_for_job\",\"$id_items\")'  > " ;
                        $table .= "$num </div>   </td>"  ;

                                 } ELSEIF ($booked_job === 0 ) {  // available to allocated 
                                 $class .= "g"   ;
                                    $table .= "<td class='truckbox' > <div class='$class' id='$id_items' onClick='allocate(\"$booked_for_job\",\"$id_items\")'  > " ;
                                 $table .= "$num </div>   </td>"  ;

                                                   } ELSE {    // allocated to ANOTHER job 
                                                   $class .= "a"   ;
                                                   $table .= "<td class='truckbox' > <div class='$class' id='$items' > " ;
                                                   $table .= "</td> "  ;
                                                   }

               } // while 

         $table .= "</tr>" ; 
         } ; // if
}; //for


$table .= "</table> " ;

$table .= "<table width='200px'  align='center'  cellspacing='12'  cellpadding='1'   ><tr>" ; // draw table buttons close and allocate
$table .= "</tr><tr>" ;
$table .= "<td class='truckbox' <div class='yesbutton' id='yes' onClick='confirm_allocate()' ; return false ;  >  ";
$table .= "<td class='truckbox' <div class='nobutton' id='no' onClick='hide()'   >  ";
$table .= "</tr></table> ";

echo $table ; // finally draw table   

include '../database_sql/dbclose.php' ;

?>

2 个答案:

答案 0 :(得分:1)

我没有在正在生成的表格单元格(id元素)上看到任何td属性。所以ref只是空白或未定义。

如果那不是问题那么它可能是.rows.cells。请尝试使用.getElementsByTagName('td')。我认为该行应该在循环之外,因为它在每次迭代时都不会改变。

此外,HTML的后半部分是错误的 - 您不会关闭td标记。而不是<td class='truckbox' <div class...它应该是<td class='truckbox'><div class...

答案 1 :(得分:1)

您忘记访问数组元素:

...
for (i=0; i<r; i++) {
  var row = tab.rows[i];
  var cc = row.cells.length;

  for (col=0; col<cc; col++){
    var x = row.cells[col];
...