清除所有ASP标签字段

时间:2012-12-22 12:03:49

标签: javascript asp.net

我正在尝试使用javascript清除.aspx页面中的所有字段(应该是跨浏览器)。以下代码适用于TextBox字段,但不适用于Label字段。

var elements = document.getElementsByTagName("input");
for (var i = 0; i < elements.length; i++) {
    if (elements[i].type == "text") {
        elements[i].value = "";
    }
    else if (elements[i].type == "label") {
        elements[i].value = "";
    }
}

后来我看到HTML将asp.net标签呈现为span所以我也试过了:

else if (elements[i].type == "span") {
    elements[i].innerHTML = "";
}

仍然没有清除标签。我在这里做错了吗?

另一个问题是,无论何时刷新页面,清除的TextBox字段都会再次填充旧值..(真的很令人沮丧)

我正在通过引用 this

来尝试上述代码

请帮忙。

4 个答案:

答案 0 :(得分:3)

在现代浏览器中,这将清除所有span元素。

[].slice.call(document.querySelectorAll("span")).forEach(function(e){
    e.innerHTML="";
})

如果您已将“标签”类应用于ASP标签,那么您可能更具体:

[].slice.call(document.querySelectorAll(".label")).forEach(function(e){
    e.innerHTML="";
})

以下示例适用于旧版浏览器:

var spans = document.getElementsByTagName("span");
for (var i=0; i < spans.length; i++)
{
    if ("label" == spans[i].className)
        spans[i].innerHTML = "";
}

答案 1 :(得分:3)

这是因为没有labelspan这样的类型。 spanlabel标记完全不同,因此您应为每个标记使用getElementsByTagName。以下代码应该使用if块的更明确的条件。

var elements = document.getElementsByTagName("input");
for (var i = 0; i < elements.length; i++) {
    if (elements[i].type == "text") {
        elements[i].value = "";
    }
}

elements = document.getElementsByTagName("span");
for (var i = 0; i < elements.length; i++) {
    if (elements[i].className == "aspLabel") {
        elements[i].innerHTML = "";
    }
}

elements = document.getElementsByTagName("label");
for (var i = 0; i < elements.length; i++) {
    if (elements[i].className == "labelClass") {
        elements[i].innerHTML = "";
    }
}

答案 2 :(得分:0)

通过引用@Bert Evans的帖子我解决了我的问题..问题是我的所有标签字段包括标题的类名称为' label '。因此,如果我使用Bert的解决方案,它将清除所有标签字段,包括标题(我不想要)。早些时候,我想我可以通过为要清除的字段分配多个类来解决这个问题。像这样的东西

<asp:Label class="label clear" ID="lblBoxId" runat="server" Text="Box Id:"></asp:Label>

然后是Bert的解决方案,

 var spans = document.getElementsByTagName("span");
 for (var i=0; i < spans.length; i++)
 {
     if ("clear" == spans[i].className)  //replacing 'label' with 'clear'
        spans[i].innerHTML = "";
 }

这不能解决问题。但是当我使用两个类的组合时,问题就解决了:)。

  if ("label clear" == spans[i].className)  //using combination of classes as condition

这可能很简单,但我真的浪费了我宝贵的时间来理解它。所以我分享了:))

编辑:也可以使用简单的indexOf()

解决
if (spans[i].className.indexOf("clear") != -1)   //not tested

答案 3 :(得分:0)

为什么不使用html标签或span与runat =&#34; server&#34;,那么在不同的浏览器中不同的控制渲染不会遇到任何问题

<label id="lblMyLabel" runat="server"></label>

<span id="spMySpan" runat="server"></span>

此代码应该可以使用

var elements = document.getElementsByTagName("label");
for (var i = 0; i < elements.length; i++) {
        elements[i].innerHTML = "";
}