2012-11-03 128 views
0

我每頁有四行。四行直接從mysql表中解析出來。每行都有一個複選框。我想知道選中了哪個複選框。 在下面顯示的代碼中,它僅保存頁面的第一行。所以如果我選擇第三行,它會顯示爲第一行。我使用onchange方法來知道選擇了什麼,但哪一個我不知道如何得到它。選中了哪個複選框

有人可以幫忙嗎?

<?php 

    //limit for number of categories displayed per page 
    $limit = 4; 

    $categoriesNum= mysql_query("SELECT COUNT('categoryTopic') FROM categories"); 

    //number of current page 
    $page =(isset($_GET['page']))? (int) $_GET['page'] :1; 

    //calculate the current page number 
    $begin =($page - 1)* $limit; 

    //number of pages needed. 
    $pagesCount =ceil(mysql_result ($categoriesNum,0)/$limit); 

    //Query up all the Categories with setting the Limit 
    $CategoryQuery = mysql_query ("SELECT categoryTopic From categories ORDER BY categoryTopic LIMIT $begin, $limit"); 

    //Place all categories in an array then loop through it displaying them one by one 
    while ($query_rows = mysql_fetch_assoc($CategoryQuery)) 
    { 

     $category =$query_rows['categoryTopic']; 
     //echo $category; 
     //query all the subcategories that the current category has 
     $Sub = mysql_query ("SELECT categoryTopic FROM subcategories WHERE categoryTopic='$category'");    
     $Count = mysql_num_rows ($Sub); 

     echo '<table width="85%" border="1" cellpadding="0"; cellspacing="0" align="center"> 

     <tr>   
      <th width="23%" height="44" scope="col" align="left"> '.$query_rows['categoryTopic'].' <br><br><br></th> 
      <th width="24%" scope="col">'.$Count.'</th> 
      <th width="25%" scope="col"> 0 </th> 
      <th width="28%" scope="col"> <form name = "choose"> 
      <label><input type="checkbox" id ="check" value= '.$category.' onchange="handleChange(this);"></label> 
     </tr> 
    </table>'; 
    } 
    ?> 

<script type="text/jscript"> 
//this function will be called when user checks a check box. 

function handleChange(cb) { 

//get the selected category 
var category = document.getElementById('check').value; 
document.write(category); 

回答

1

看的喜歡你是有重複的ID在頁面上的 ..

如果每個行有標記ID =「檢查」,因爲ID在一個頁面中必須是唯一的它總是與相應的ID獲得的第一個元素..

所以它總是會在第一行..

而是嘗試直接傳遞THIS.VALUE在事件

onchange="handleChange(this.value); 

function handleChange(cb) { 

document.write(cb); 

這是一個不好的做法。所以首先嚐試固定重複的ID的問題..

+0

如果我給每一行不同的如果我怎麼知道哪一個被點擊? – user1785939

+0

美麗漂亮。謝謝你,你真棒 – user1785939

1

如果我理解你的問題吧,你想知道如何可以得到類別(複選框的值)用戶剛點過的複選框?

function handleChange(cb) { 
    // get the selected category 
    var category = cb.value; 
    // ... 
} 

你給通過cb -param當前點擊複選框到handleChange -function。所以如果你想得到這個複選框的屬性,只需查找cb -object的屬性即可。

0

您的多行具有相同的id,這會導致您的HTML無效。爲了避免這種情況,你應該改變你的javascript代碼爲

function handleChange(cb) { 
//get the selected category 
var category = cb.value; 
document.write(category); 
} 
相關問題