[英]javascript function in while loop
我有一个使用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循环的值,而不是我单击复选框的那一行。
如何获得正确的价值?
谢谢!
从这里快速看一下吧……最好保持您的ID唯一。 在while循环中创建一个计数器,并设置id="cellaId"+counter
然后,您可以传递onClick="refreshData("+count+")"
让我知道它是否有效。
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
属性有相同的问题,因此您可以在示例中做类似的事情(我使用数组,以便在发布表单时获得数组)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.