我在PHP变量的显示上遇到问题。T[0]
代表表中的用户名。我想做的是,当我单击某人的名字时,它会在警报上显示该名字。但是,尽管JS函数位于循环内,但我的警报仅在表上显示第一个用户名。
<?
while($T=mysql_fetch_array($res))
{
echo' <tr>
<td><img src="data:image/jpeg;base64,'.base64_encode($T[0]).'" class="rounded-circle" height="40" width="40" />
<b id="myP" onclick="myFunction()">'.$T[1].'</b></td>
<td><b>'.$T[2].'</b></td>
<td><b>'.$T[3].'</b></td>
<td><b>'.$T[4].'</b></td>
</tr>
<script>
function myFunction() {
x = document.getElementById("myP").innerHTML;
alert(x);
}
</script>
' ;
}
?>
将在所有id="myP"
元素上重复使用<b
。当您使用document.getElementById("myP")
时,它将调用最后一个元素。
要解决这个问题,id =“ ..”必须是唯一的。一种简单的方法与此类似:
<?
while($T=mysql_fetch_array($res))
{
echo' <tr>
<td><img src="data:image/jpeg;base64,'.base64_encode($T[0]).'" class="rounded-circle" height="40" width="40" />
<b id="myP_' . $T[0] . '" onclick="myFunction()">'.$T[1].'</b></td>
<td><b>'.$T[2].'</b></td>
<td><b>'.$T[3].'</b></td>
<td><b>'.$T[4].'</b></td>
</tr>
<script>
function myFunction() {
x = document.getElementById("myP_' . $T[0] . '").innerHTML;
alert(x);
}
</script>
' ;
}
?>
现在,它使每个ID成为唯一标识符,因此当您呼叫用户时,它将呼叫您单击的同一用户。