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

时间:2019-04-27 02:59:29

标签: javascript php html sql

我正在尝试构建一个简单的“博客”,我自己或主持人可以通过调用delete函数将其删除。但是,我只希望为管理员显示删除按钮。我创建了一个函数来验证用户,效果很好。但是,我对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; ?>

好,非常感谢您的回答,我只需在循环内输入决策语句即可确定是显示还是跳过。多谢!!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

无需多次调用函数来设置样式。在您的<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

看看有关var indexPaths = [IndexPath(row: 0, section: 1), IndexPath(row: 1, section: 1), IndexPath(row: 2, section: 1), IndexPath(row: 2, section: 0) ] extension Array where Element == IndexPath { func splitArray() -> Array<[IndexPath]> { var tempDict = [String : [IndexPath]]() for element in self { let section = element.section if tempDict[String(section)] != nil { // some element append if var array = tempDict[String(section)] { array.append(element) tempDict[String(section)] = array } } else { tempDict[String(section)] = [element] } } // dictionary mayn't have sorted, sort the dictionary tempDict.sorted{ $0.key > $1.key } var returnedArray = Array<[IndexPath]>() for (key, value) in tempDict { returnedArray.append(value) } return returnedArray } } print(indexPaths.splitArray()) 听众的this post也可能是有益的。