使用Javascript设置ASP Literal文本

时间:2011-02-09 14:14:52

标签: javascript asp.net literals

我的页面上有一个asp:Literal(无法转换为Label或任何其他控件),我需要通过JavaScript更改文本。我有以下代码适用于 Label 。有人可以帮忙吗?

<script type="text/javascript">
        function changeText() {
            document.getElementById('<%= Test.ClientID %>').innerHTML = 'New Text';
        }
    </script>

        <a href="#" onclick='changeText()'>Change Text</a>
        <asp:Label id="Test" runat="server" Text="Original Text" />

由于

<小时/> 的更新: 我无法从文字中更改,因为背后的代码将HTML / CSS写入信息消息,例如:

LITMessage.Text = "<div class='success'>Information Successfully Updated</div>"

5 个答案:

答案 0 :(得分:19)

<asp:Literal>控件不会创建自己的HTML标记 因此,没有可以操纵的元素。

相反,您可以将<asp:Literal>打包在带有ID的<div>标记中。

答案 1 :(得分:7)

ASP.NET Literal不会向页面添加任何标记。因此,您必须将内容包装在某个容器中,以便可以通过JavaScript编辑它:

假设您在页面上有以下文字:

<asp:Literal runat="server" Id="literalControl" />

并且通过代码设置文本(因为如果你不是,你可以在标记中创建span / div以开始而不是这个问题):

literalControl.Text = "Some text you want to change";

背后的代码变为:

literalControl.Text = "<span id='myId'>Some text you want to change</span>";

JavaScript将是:

document.getElementById('myId').innerHTML = 'New Text';

答案 2 :(得分:3)

文字是否包含html标记?

如果没有,你可以将文字控件包装在div中并给它一个id。然后使用js替换该div中的文本。

响应您的更新:

在这种情况下,由于你使用success类渲染一个div,我会使用jQuery来更新该div中的html ......它就像这样简单:

$('.success').html('new html goes here');

答案 3 :(得分:3)

<asp:literal>控件包装在<div>中,然后根据需要使用jQuery清除如下所示的内容:

<div id="divMyText">
  <asp:Literal ID="MyText" runat="server"></asp:Literal>
</div>

以下是使用jQuery清除文本的方法:

//Clear the html inside of the div
$("#divMyText").html("");

答案 4 :(得分:1)

Literal是直接呈现页面的文本。它将呈现的唯一HTML将是您在设置为Literal的文本字符串中包含的HTML标记。您可以使用ASP Label并对其执行操作,而不是使用div包围的Literal(除非您特别需要该功能)。