0

我有一些来自数据库的数据通过 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 循环中出来,而不是在我单击复选框的同一行上。

我怎样才能获得正确的价值?

谢谢!

4

2 回答 2

0

在这里快速浏览一下...最好保持您的 ID 唯一。在你的while循环中创建一个计数器,并设置id="cellaId"+counter

然后你可以通过onClick="refreshData("+count+")"

让我知道它是否有效。

于 2013-03-17T00:45:57.010 回答
0

一个 html 页面上只能有一个唯一 ID。

您可以做的是添加一个计数器或$dato->IdID,以便它是唯一的并且您可以识别它。然后,您可以使用该 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属性也有同样的问题,所以你可以在我的例子中做类似的事情(我使用一个数组,以便在发布表单时你会得到一个数组)。

于 2013-03-17T00:46:05.510 回答