繁体   English   中英

无法让我的 Javascript 函数在 PHP foreach 循环中多次运行

[英]Can't get my Javascript function to run more than once in a PHP foreach loop

我正在尝试构建一个简单的“博客”,我自己或版主可以通过调用删除函数来删除它。 但是,我只希望向管理员显示删除按钮。 我创建了一个函数来验证用户,它工作正常。 但是,我对 Javascript 不够熟悉,不知道是使用 window.onload 还是 onopen 或 onchange,或者如何将函数附加到我的 Foreach 循环以针对我拥有的每篇博文运行。 当我有 10 篇博客文章时,它只显示第一篇(或最后一篇)文章。

我已经尝试将“onload/onopen/onchange”命令添加到主体、foreach 循环和我的标签中,以查看它是否有不同的响应。

<script>
    function ShowDelete()
{
    var x = document.getElementById("Delete");
        if (userid === "1") {
            x.style.display="block";
    }
    else {
        x.style.display="none";
    }
}
window.onload = ShowDelete;
</script>
<?php foreach ($entries as $entry) : ?>
  <?php if ($userid == 1) { ?>
<input type="submit" id="btnDelete" value="Delete Post" />
<?php } ?>
<?php endforeach; ?>

好的,非常感谢大家的回复,我只是在循环内输入决策语句来确定是显示还是跳过。 万分感谢!!!

您正在创建一个 HTML 输入,然后将其隐藏。 最佳实践不是首先根据您的用户 ID 创建元素。

<?php foreach ($entries as $entry) : ?>
    /* Check for userid here and create delete element if condition is met */
<?php endforeach; ?>

无需多次调用函数来设置样式。 在您的onload事件中,按类名捕获所有<input/>元素并设置您的display样式。 请注意, id属性必须是唯一的,因此应使用class属性而不是id

 const userid = "0"; window.addEventListener('DOMContentLoaded', () => { let inputs = document.getElementsByClassName("Delete"); Array.from(inputs).forEach(input => { input.style.display = userid === "1" ? "block" : "none"; }); });
 <input type="submit" class="Delete" value="Delete Post" /> <input type="submit" class="Delete" value="Delete Post" /> <input type="submit" class="Delete" value="Delete Post" />

查看有关load侦听器的这篇文章也可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM