使用javascript隐藏转发器链接按钮

时间:2016-03-22 13:31:32

标签: javascript asp.net repeater hidden

我有一个转发器和一些物品。其中一项是链接按钮。我想隐藏它,实际上我只能是第一个。我的意思是如果转发器显示4条记录,则只有第一条链接按钮变为隐藏状态。我可以看到我需要一个循环来转发转发器并隐藏所有链接按钮,但我真的卡住,因为我是初学者在JavaScript中。 这是我的转发器:

<asp:Repeater DataSourceID="EntityDataSourceHdcvi" ID="Repeater1" runat="server">
   <ItemTemplate>
        //Some other code
        <div id="silBeni" class="sil fl">
          <asp:LinkButton ID="deleteProduct" runat="server" Text="Kaldır" CommandArgument='<%#Eval("UrunId")%>' CommandName="deleteProduct" OnClick="LinkButton_Click"></asp:LinkButton>
        </div>
   </ItemTemplate>
</asp:Repeater>

我的javascript代码:

function hideColumn() {
    sartnameDiv.style.display = 'block';

    var bizimDiv = document.getElementById("silBeni");
    bizimDiv.style.display = "none";
} 

2 个答案:

答案 0 :(得分:2)

你可以做的是按班级搜索。不能有多个具有相同id的元素,因此我们按类搜索多个元素。

var elements = document.getElementsByClassName("sil");

Array.prototype.forEach.call(elements, function(element) {
  element.style.display = "none";
});

请注意,普通数组函数不能用于getElementsByClassName的结果,所以这就是你需要

的原因
 Array.prototype.forEach.call 

而不是像普通数组那样写作。

elements.forEach(function(element){
});

请注意,现在我们将找到所有具有类sil的元素,这意味着如果页面上有更多元素与此类,则也会找到它们,因此您可能需要相应地调整html。

编辑:根据Webruster的评论,我们还需要确保在我们希望它被调用时调用该函数。

答案 1 :(得分:0)

您可以创建一个虚拟css并附加到要为其执行某些操作的HTML,而不是更改HTML,其余的操作由@Fakenick清楚地解释。  请看下面如何添加虚拟css:

这是 HTMl

<asp:Repeater DataSourceID="EntityDataSourceHdcvi" ID="Repeater1" runat="server">
   <ItemTemplate>
        //Some other code
        <div id="silBeni" class="sil fl hideclass">
          <asp:LinkButton ID="deleteProduct" runat="server" Text="Kaldır" CommandArgument='<%#Eval("UrunId")%>' CommandName="deleteProduct" OnClick="LinkButton_Click"></asp:LinkButton>
        </div>
   </ItemTemplate>
</asp:Repeater>

制作一个虚拟的 Css 并尝试追加隐藏的 Div

<style>
.hideclass{
}
</style>

<强> JS

function hideColumn() {
    sartnameDiv.style.display = 'block';
 var elements = document.getElementsByClassName("hideclass");
   Array.prototype.forEach.call(elements, function(element) {
  element.style.display = "none";
});

}