0

1ページに4行あります。直接解析される4つの行がmysqlテーブルを形成します。各行にはチェックボックスがあります。どのチェックボックスが選択されたか知りたい。以下に示すコードでは、ページの最初の行のみを保存しています。したがって、3番目の行を選択すると、最初に選択した行として表示されます。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); 
4

3 に答える 3

1

ページに重複した IDがあるようです。

各行にLABEL id="check"がある場合、ページ内の ID は一意でなければならないため、対応する ID を持つ最初の要素が常に取得されます。

したがって、常に最初の行になります..

代わりに、イベントで直接 this.value を渡してみてください

onchange="handleChange(this.value);

function handleChange(cb) {

document.write(cb); 

これは悪い習慣です..最初に重複したIDの問題を修正してみてください..

于 2012-11-03T20:44:58.653 に答える
1

あなたの質問が正しく理解できたら、ユーザーがクリックしたばかりのチェックボックスのカテゴリ (チェックボックスの値) を取得する方法を知りたいですか?

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

handleChange-paramを介して、現在クリックされているチェックボックスをcb-function に渡します。したがって、このチェックボックスの属性を取得したい場合は、オブジェクトの属性を探すだけですcb

于 2012-11-03T20:49:28.487 に答える
0

同じ ID を持つ複数の行があり、HTML が無効になっています。これを回避するには、JavaScript コードを次のように変更する必要があります。

function handleChange(cb) {
//get the selected category 
var category = cb.value; 
document.write(category);
}
于 2012-11-03T20:54:17.067 に答える