繁体   English   中英

while循环中的javascript函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM