2009-12-11 111 views
1

我必須對以下簡單的HTML頁面進行哪些更改才能讓Firefox讀取和設置自定義屬性,就像它在IE中一樣?自定義HTML屬性:Firefox vs IE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Original Value</title> 
</head> 

<body> 

<div MyAttribute="Original Value" id="Label1">Hello World</div> 

<form method="post"> 
    <table style="width: 100%"> 
     <tr> 
      <td> 
      <input name="Button1" onclick="button1_click();" type="button" value="button" /></td> 
     </tr> 
    </table> 
    <script type="text/javascript"> 
function button1_click(){ 

alert("Enter"); 
//alert("Label1.MyAttribute " + Label1.MyAttribute); 
alert(Label1.getAttribute("MyAttribute")); 

Label1.MyAttribute = "Updated"; 
alert("Label1.MyAttribute " + Label1.MyAttribute); 

} 
</script> 
</form> 

</body> 

</html> 

回答

7

您已經發現getAttribute,但是您需要使用document.getElemenById檢索元素,並且您需要使用setAttribute來修改該屬性。

function button1_click() 
{ 
    alert("Enter"); 
    var label1 = document.getElementById("Label1"); 
    alert(label1.getAttribute("MyAttribute")); 
    label1.setAttribute("MyAttribute", "Updated"); 
    alert("Label1.MyAttribute " + label1.getAttribute("MyAttribute")); 
} 
0

嘗試:

function button1_click(){ 
    alert("Enter"); 

    var label = document.getElementById('Label1'); 
    alert(label.getAttribute("MyAttribute")); 
    label.MyAttribute = "Updated"; 
    alert("Label1.MyAttribute " + label.MyAttribute); 

} 

IE瀏覽器似乎搜索當您在JavaScript中使用一個未定義的全局變量元素ID(也可能是名稱)。 Firefox不。

你可能會說任何一種行爲都是正確的,但我不得不在Firefox這邊支持。我不喜歡瀏覽器假設我的代碼。只有在你的原始代碼中出現一次小錯誤,難以發現。

+0

爲什麼倒票?......只是出於好奇:] – Atli 2009-12-11 18:12:18

0

您的標記將無效。我曾經見過人們做過這種事情,但從來沒有試圖理解它。除非您使用不同的MIME類型,否則您如何強制任何應用程序理解它?那麼其他瀏覽器呢?

+0

偉大的語義網辯論。 :(你現在如何提供自定義屬性? – AnthonyWJones 2009-12-11 14:09:48

+0

我認爲(?)我們可能會同意像winform控件標籤這樣的客戶屬性是有用的,如果這個功能有意或無意在所有主流瀏覽器中都有效,爲什麼不使用它?擔心,因爲它不是官方規範的一部分,它可能會停止工作?:-) – ChadD 2009-12-11 14:48:52

+0

data - * =「」。見http://www.whatwg.org/html5/#embedding-custom-non-visible-data – Ms2ger 2009-12-11 17:53:25

3

您需要節點實例分配給Label1的變量:

var Label1 = document.getElementById("Label1"); 

而且,與DOM工作時,不要值設置爲性能,更好地做到這一點,setAttribute功能