我每页有四行。四行直接解析形成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);
答案 0 :(得分:1)
看起来就像您在页面上有重复ID 一样..
如果每一行都有 LABEL id =“check”,因为页面中的ID必须是唯一的,所以它总是会得到第一个带有相应ID的元素。
所以它永远是第一行..
而是尝试直接在您的活动中传递this.value
onchange="handleChange(this.value);
function handleChange(cb) {
document.write(cb);
这是一种不好的做法..所以首先尝试修复重复ID的问题..
答案 1 :(得分:1)
如果我理解你的问题,你想知道如何获得用户刚刚点击的复选框的类别(复选框的值)?
function handleChange(cb) {
// get the selected category
var category = cb.value;
// ...
}
您可以通过handleChange
- param将当前单击的复选框提供给cb
- 函数。因此,如果您想获取此复选框的属性,只需查找cb
- 对象的属性。
答案 2 :(得分:0)
您有多个具有相同ID的行会使您的HTML无效。为避免这种情况,您应该将您的javascript代码更改为
function handleChange(cb) {
//get the selected category
var category = cb.value;
document.write(category);
}