2013-03-17 49 views
0

我有贴有一个while循环数据库中的某些数据功能:的JavaScript中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] 
} 

的问题是,我得到的idval始终是第一个从while循环出来的,而不是在单击复选框的同一行上。

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

谢谢!

+1

你绝对**不能**有多个具有相同'id'的元素。每个元素(如果需要'id')都应该被赋予一个唯一的元素。 – 2013-03-17 00:45:36

回答

0

您只能在html页面上拥有一个唯一的ID。

你可以做什么,是添加一个计数器或$dato->Id的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属性同样的问题,所以你可以在我的例子做这样类似的有什么(我使用一个数组这样当表单发布时你会得到一个数组)。

+0

完美!谢谢!!名称并不重要,我不需要它,只有在选中复选框时更新数据库的ID! – user2120569 2013-03-17 00:50:17

+0

@ user2120569不客气! – jeroen 2013-03-17 00:51:54

+0

是的,我试图做到这一点,但我必须等待!我会稍后再做;-) – user2120569 2013-03-17 00:53:00

0

突然出现在这里快速查看... 最好保持您的ID唯一。使你的while循环计数器,并设置id="cellaId"+counter

那么你可以传递onClick="refreshData("+count+")"

让我知道,如果它的工作原理。