如何使用javaScript设置ASP.net html控件(标签)

时间:2014-07-03 09:37:01

标签: javascript html asp.net

我创建了一个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()函数在文本字段上工作但在标签上不起作用。有什么东西可以丢失吗?感谢。

2 个答案:

答案 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是否有名为innerHTMLvalue的媒体资源。我建议你将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;
}

Fiddle

答案 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");
    }

这对我有用!

注意:请根据您的需要更改功能!