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);
}