Javascript 单个id在while循环中同时发出警报
我有一个表,从中获取活动并显示在表中…如下所示Javascript 单个id在while循环中同时发出警报,javascript,php,Javascript,Php,我有一个表,从中获取活动并显示在表中…如下所示 <table width="1000px;" style="border:0px;" > <tr> <?php $sql_activities="select * from tb_activities"; $query_activities=mysql_query($sql_activities); while($row_a
<table width="1000px;" style="border:0px;" >
<tr>
<?php
$sql_activities="select * from tb_activities";
$query_activities=mysql_query($sql_activities);
while($row_activities=mysql_fetch_array($query_activities))
{
?>
<td width="50">
<input type="radio" value="<?php echo $row_activities['activity_name']; ?>" name="activities" onclick="hi() " id="activities" /><?php echo " ".$row_activities["activity_name"]; ?></td>
<?php
}
?>
</tr>
</table>
您应该做的是更改以下内容:
onclick="hi()"
为此:
onclick="hi(this);
那么您的功能将是:
function hi(who) {
var a = who.value;
alert(a);
}
在PHP中,事情会发生变化:
<td width="50"><input type="radio" value="<?php echo $row_activities['activity_name']; ?>" name="activities" onclick="hi() " id="activities" /><?php echo " ".$row_activities["activity_name"]; ?></td>
代码可能有一些转义错误,但从逻辑上讲,这应该会让您知道如何做,希望这会有所帮助。您不能为多个元素提供相同的id。无论如何,您单击的元素与您警告的元素之间没有任何关系。document.getElementById只返回1个元素,您不应该为所有元素提供相同的ID。。你可以使用类,而不是迭代它们,那么我如何解决我上面提到的这个问题呢?为什么没有人再使用像smarty这样的模板系统了…或者使用ajax从php获取数据。有点担心看到人们经常把逻辑代码和表示代码混合在一起。
<td width="50"><input type="radio" value="<?php echo $row_activities['activity_name']; ?>" name="activities" onclick="hi() " id="activities" /><?php echo " ".$row_activities["activity_name"]; ?></td>
<?php $i = 1; ?>
<td width="50"><input type="radio" value="<?php echo $row_activities['activity_name']; ?>" name="<?php echo $row_activities['activity_name'].$i; ?>" id ="<?php echo $row_activities['activity_name'].$i; ?>" onclick="hi("<?php echo $row_activities['activity_name'].$i; ?> ")" /></td>
<?php $i++; ?>
function hi(elementID) {
var value = document.getElementById(elementID).value;
alert(value);
}