我的页面上有一个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>"
答案 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(除非您特别需要该功能)。