<asp:Label runat="server">伺服器控制項render到前端瀏覽器時,會自動轉換成<span>。在IE當中,<span>物件有提供innerHTML的屬性,因此在IE或是Firefox當中,你可以直接使用下面的程式設定<asp:Label runat="server">伺服器控制項在瀏覽器中的內容:
<script type="text/javascript">
document.getElementById("Label1").innerHTML = 'Hello!';
</script>
但若是換成innerText的話,下面的程式在Firefox中就會有問題:
<script type="text/javascript">
document.getElementById("Label1").innerTexr = 'Hello!';
</script>
因為Firefox和IE支援的DOM不太一樣,所以在Firefox的程式當中,<span>不支援innerText的屬性。若是你想要直接將資料加入<span>控制項當中的話,就必須要使用下面的語法:
mylabel = document.getElementById("Label1");
mylabel.firstChild.data = 'Hello!';
若是原始的<asp:Label runat="server">伺服器控制項沒有設定Text屬性值的話,則render出來的<span>會是一個空元素,則上面的程式執行會有問題。為了避免這種情況,所以完整的程式就要寫成下面的樣子:
<script type="text/javascript">
mylabel = document.getElementById("Label1");
if ( mylabel.firstChild == null )
{
node = document.createTextNode( '' );
mylabel.appendChild( node );
}mylabel.firstChild.data = 'Hello!';
</script>
沒有留言:
張貼留言