使用 javascript 隐藏转发器链接按钮
Make a repeater linkbutton hidden with javascript
我有一个中继器和一些物品。其中一项是链接按钮。我想隐藏它,实际上我可以,但只能隐藏第一个。我的意思是如果转发器显示 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";
}
您可以通过 class 进行搜索。不能有多个元素具有相同的 id,因此我们通过 class.
搜索多个元素
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){
});
但是请注意,现在我们将找到所有具有 class sil 的元素,这意味着如果您在页面上有更多具有此 class 的元素,它们也会被找到,所以你可能需要相应地调整你的html。
编辑:根据 Webruster 的评论,我们还需要确保函数在我们希望它被调用时被调用。
而不是更改 HTML,您可以创建一个虚拟 css 并附加到您想要对其进行一些操作的 HTML,其余选项由@法肯尼克。
请在下面查看如何添加虚拟 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";
});
}
我有一个中继器和一些物品。其中一项是链接按钮。我想隐藏它,实际上我可以,但只能隐藏第一个。我的意思是如果转发器显示 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";
}
您可以通过 class 进行搜索。不能有多个元素具有相同的 id,因此我们通过 class.
搜索多个元素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){
});
但是请注意,现在我们将找到所有具有 class sil 的元素,这意味着如果您在页面上有更多具有此 class 的元素,它们也会被找到,所以你可能需要相应地调整你的html。
编辑:根据 Webruster 的评论,我们还需要确保函数在我们希望它被调用时被调用。
而不是更改 HTML,您可以创建一个虚拟 css 并附加到您想要对其进行一些操作的 HTML,其余选项由@法肯尼克。 请在下面查看如何添加虚拟 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";
});
}