[英]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.