我从数据库中发布了一些带有while循环的数据:
$dati = $link->query($sql);
print '<table>';
while ($dato = $dati->fetch_object()) {
print '<tr>';
print '<td id="cellaId">';
$Id = $dato->Id;
print $Id;
print '</td>';
print '<td>';
print $dato->Data;
print '</td>';
...some other stuff...
print '<td>';
print '<input type = "checkbox" name = "visto" id = "visto" onclick = "refreshData()">';
print '</td>';
print '<td>';
print '<input type = "checkbox" name = "elaborato" id = "elaborato" onclick = "refreshData()">';
print '</td>';
print '</tr>';
}
print '</table>';
$dati->close();
现在这两个“复选框”调用一个函数:
function refreshData() {
var vistovalue = document.getElementById("visto").checked ? '1' : '0'
var elaboratovalue = document.getElementById("elaborato").checked ? '1' : '0'
var idvalue = document.getElementById("cellaId").innerHTML
alert(idvalue);
[and then I do an ajax]
}
问题是我得到的idvalue总是第一次从while循环中出来,而不是在我点击复选框的同一行。
我怎样才能得到正确的价值?
谢谢!
答案 0 :(得分:0)
Jut快速看看这里......
最好保持您的ID唯一。在while循环中创建一个计数器,并设置id="cellaId"+counter
然后你可以通过onClick="refreshData("+count+")"
让我知道它是否有效。
答案 1 :(得分:0)
html页面上只能有一个唯一的ID。
您可以做的是在ID中添加一个计数器或$dato->Id
,以便它是唯一的,您可以识别它。然后,您可以使用该ID作为参数调用您的函数。
示例:
print '<input type="checkbox" name="visto[' . $dato->Id . ']"
id="visto' . $dato->Id . '" onclick="refreshData(' . $dato->Id . ')">';
和
function refreshData(Id) {
var elID = 'visto' + Id;
// etc.
你的name
属性也有同样的问题,所以你可以在我的例子中做类似的事情(我正在使用数组,以便在发布表单时获得一个数组)。 / p>