while循环中的javascript函数

时间:2013-03-17 00:38:18

标签: php javascript 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循环中出来,而不是在我点击复选框的同一行。

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

谢谢!

2 个答案:

答案 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>