更新答:
您使用的是真的應該遠離的標識符:Object
。我建議更改id
和您使用的變量的名稱。所以:
<div id="theObject" titleDiv="blank"></div>
和
var theObject=document.getElementById('theObject');
theObject.setAttribute("titleDiv","myDiv");
Object
是JavaScript的內置功能。由於元素的id
被轉儲到全局名稱空間中,因此我將避免使用任何內置JavaScript函數(Object
,Function
,Date
等)作爲id
值。出於類似的原因,特別是如果你不會讓自己和其他人混淆,我會遠離它們作爲變量名稱。
這就是說,我couldn't replicate the problem(source),所以雖然我仍然會改變id
和變量名稱,這可能不是問題。另見下文。
原來的答案:
您對DOM元素實例調用setAttribute
。你不通過內置的Object
函數來完成。
如果使用DOM元素,它的工作原理(即使在IE9):
(function() {
// Get an actual DOM element
var target = document.getElementById("target");
// Set the attribute
target.setAttribute("titleDiv","myDiv");
// Show the result
display("Result: " + target.getAttribute("titleDiv"));
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
Live Example | source
如果您使用F12開發人員工具並轉到HTML選項卡,則可以看到div
實際上確實獲取了該屬性。 (請務必使用開發工具,而不是「查看源代碼」 - 「查看源代碼」將向您顯示從服務器發送的HTML,而不是DOM的當前狀態。)
邊注:使用不使用the data-
prefix是一個壞主意非標準屬性。您可能想要將這些信息提供給支配這一信息的人。但這幾乎不是你遇到的問題。
是什麼讓你覺得IE9沒有這樣做?適用於我,只要您使用實際的DOM元素,而不是字面意義上的「Object」:http://jsbin.com/ujadaj/1([source](http://jsbin.com/ujadaj/1))。 – 2013-04-29 09:30:26
這個? http://stackoverflow.com/questions/3919291/when-to-use-set-attribute-vs-attribute-in-javascript – 2013-04-29 09:33:10
@BillyMoat:這是*具體*的'類'屬性,IE8和更早的版本有真正的問題,但幸運的是它通過名爲'className'的屬性反映出來。 – 2013-04-29 09:36:35