PHP和Javascript:表中的多个按钮

PHP和Javascript:表中的多个按钮,javascript,php,forms,button,onclick,Javascript,Php,Forms,Button,Onclick,我正在使用PHP、Javascript和MySQL。我的目标是每行都有一个按钮。该按钮应调用onclick函数并将href转到另一个页面 我的代码有问题->只有第一行的按钮是可点击的 我假设每个按钮的按钮ID都必须是唯一的。。我有哪些选项可以使所有按钮都可单击 // printing table rows while($row = mysqli_fetch_row($result)) { echo "<tr>"; echo "<td><button

我正在使用PHP、Javascript和MySQL。我的目标是每行都有一个按钮。该按钮应调用onclick函数并将href转到另一个页面

我的代码有问题->只有第一行的按钮是可点击的

我假设每个按钮的按钮ID都必须是唯一的。。我有哪些选项可以使所有按钮都可单击

// printing table rows
while($row = mysqli_fetch_row($result))
{
    echo "<tr>";
    echo "<td><button id='greenbutton' class='small pill green'>$row[0]</button></td>"; 
    echo "<td><img src='/iframe/$row[7]'>&nbsp$row[5]</td>";
    echo "<td>$row[4]&nbspmin(s)</td>";     
    echo "<td><img src='/iframe/$row[6]'>&nbsp$row[2]</td>";
    if ($row[3] == 0) {
        echo "<td>Unknown</td>";
        }
    else {echo "<td>$row[3]</td>";}
    echo "</tr>\n";

    // FOR ONCLICK
    echo "<script type='text/javascript'>";
    echo "document.getElementById('greenbutton').onclick = function () {";
    echo "location.href = '/user';";
    echo "};";
    echo "</script>";   


}
echo "</table></center>";

…就可以了。

您的dom元素的id应该始终是唯一的。为了实现这一点,您可以在while中添加一个计数器,以便所有按钮都有一个id,如“greenbutton1”、“greenbutton2”、“greenbutton3”等

$cnt = 1;
// printing table rows
while($row = mysqli_fetch_row($result))
{
    echo "<tr>";
    echo "<td><button id='greenbutton$cnt' class='small pill green'>$row[0]</button></td>"; 
    echo "<td><img src='/iframe/$row[7]'>&nbsp$row[5]</td>";
    echo "<td>$row[4]&nbspmin(s)</td>";     
    echo "<td><img src='/iframe/$row[6]'>&nbsp$row[2]</td>";
    if ($row[3] == 0) {
        echo "<td>Unknown</td>";
    }
    else {echo "<td>$row[3]</td>";}
    echo "</tr>\n";
    $cnt++;
}
echo "</table></center>";
在这个示例中,我没有将javascript函数添加到while循环中,因为它看起来与所有按钮的函数相同。我建议只添加一次函数,但将其与类选择器绑定,而不是像这样使用id选择器

// FOR ONCLICK
echo "<script type='text/javascript'>";
echo "document.getElementsByClassName('myGreenButtons').onclick = function () {";
echo "location.href = '/user';";
echo "};";
echo "</script>";   
然后将myGreenButtons类添加到while循环中的按钮中。您还可以使用属性或类型选择器以更灵活的方式收集dom元素。查看这些链接以了解更多信息:


希望这有帮助

委托事件侦听表,检查处理程序函数中的e.target,如果它是一个按钮,则执行一些操作。感谢这项工作,非常好!但是现在我需要这个javascript来更新PHP$\u会话中单击时的值。如何以简单的方式做到这一点?javascript和PHP是两个截然不同的实体。客户端和服务器端不能通过javascript更新$\u会话。您必须通过PHP才能做到这一点。因此,我建议您将表放入一个html表单中,指向一些PHP代码,这些代码将处理重定向,而不是location.href。在表单中放置一个没有值的隐藏输入。然后调整javascript,以便在单击其中一个按钮时,将要更新的值放入该输入中,然后通过javascript提交表单。Php将能够通过$\u POST和$\u get获取您的值。
// FOR ONCLICK
echo "<script type='text/javascript'>";
echo "document.getElementsByClassName('myGreenButtons').onclick = function () {";
echo "location.href = '/user';";
echo "};";
echo "</script>";