2014-07-03 27 views
0

我已經創建了一個JavaScript函數來獲取html控件的類型並將其設置爲指定值。如何使用javaScript設置ASP.net 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()函數在文本字段工作,但在標籤上不起作用。有什麼遺漏嗎?謝謝。

回答

3

它不工作的原因是因爲ASP會更改標籤的ID。您需要獲取label控件的客戶端ID。

SetControlValue('<%= lblMessage.ClientID %>', value); 

由於@Tim乙詹姆斯提出的意見,你還可以設置的ClientIDMode爲靜態如下:

<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

此外,爲了增加這一點,您可以將標籤的'ClientIDMode'設置爲'Static',這將停止asp.net更改id。 –

+0

ClientIDMode只支持從Framework 4.0開始! –

+0

嗯,我試過這並沒有工作,我得到這個錯誤'JavaScript運行時錯誤:無法獲取未定義或空引用的屬性'類型' – Angwenyi

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

這適用於我!

注意:請根據您的需要更改功能!

+0

我想,它沒有工作 – Angwenyi

+0

它的工作對我來說是什麼錯誤!? –

+0

嗨@Angwenyi!檢查編輯答案!並讓我知道..!它的作品我測試過了! –

相關問題