簡體   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