我创建了一个JavaScript函数来获取html控件的类型并将其设置为指定值。
function SetControlValue(ctrl, value) {
if (value == undefined)
return "";
if (document.getElementById(ctrl).type == "text") {
document.getElementById(ctrl).value = value;
}
else if (document.getElementById(ctrl).type == "label") {
//document.getElementById(ctrl).innerText = value;
document.getElementById(ctrl).innerHTML = value;
}
return false;
}
在我的ASPX页面上,我创建了一个标签,如下所示
<asp:Label id="lblMessage" class="labels"Font-Size="Medium" runat="server"></asp:Label>
现在调用函数
var don="sample text";
SetControlValue('lblMessage', don)
我的问题是为什么SetControlValue()函数在文本字段上工作但在标签上不起作用。有什么东西可以丢失吗?感谢。
答案 0 :(得分:3)
它无法正常工作的原因是因为ASP会更改标签的ID。您需要获取label
控件的客户端ID。
SetControlValue('<%= lblMessage.ClientID %>', value);
正如@Tim B James在评论中建议你也可以将ClientIDMode设置为Static,如下所示:
<asp:Label ClientIDMode="static" id="lblMessage" class="labels" Font-Size="Medium" runat="server"></asp:Label>
编辑:基本上您不需要检查标签或跨度。相反,您可以检查div element
是否有名为innerHTML
或value
的媒体资源。我建议你将javascript函数更改为以下内容,它应该可以工作:
function SetControlValue(ctrl, value) {
if (value == undefined) {
return "no value set";
}
var element = document.getElementById(ctrl);
if(!element) {
return "element not found";
}
if(element['value'] !== undefined) {
element['value'] = value;
} else if (element['innerHTML'] !== undefined) {
element['innerHTML'] = value;
}
return false;
}
答案 1 :(得分:0)
试试这个:
document.getElementById(ctrl).innerHTML = value;
<强>更新强>
当呈现asp.net label
控件时,Rendered
为<span>
,而不是label
。
function SetControlValue(msg) {
document.getElementById('<%= Label1.ClientID %>').innerHTML = msg;
var control = document.getElementById('<%= Label1.ClientID %>');
if (control != null && control.nodeName == "span") {
alert("its label control");
}
这对我有用!
注意:请根据您的需要更改功能!