IE 9的getAttribute方法正常工作

时间:2013-04-29 09:29:04

标签: javascript html html5 css3 internet-explorer-9

我正在使用setAttribute方法

设置名为(say)titleDiv的自定义属性

HTML代码: <div id="Object" titleDiv="blank"></div>

Javascript代码:

var Object=document.getElementById('Object'); Object.setAttribute("titleDiv","myDiv");

除IE 9以外的所有浏览器都能正常工作。 同样的事情也发生在getAttribute上。

我在代码中广泛使用上面的自定义属性,我不应该更改结构。

有没有其他方法可以编写上面的代码,以便IE了解它?

感谢。

1 个答案:

答案 0 :(得分:3)

根据问题编辑

更新了答案

您正在使用真正应远离的标识符:Object。我建议您更改id 您使用的变量的名称。所以:

<div id="theObject" titleDiv="blank"></div>

var theObject=document.getElementById('theObject');
theObject.setAttribute("titleDiv","myDiv");

Object是JavaScript中的内置函数。由于id个元素被转储到全局命名空间,我会避免使用任何内置的JavaScript函数(ObjectFunctionDate等。)作为id值。出于类似的原因,尤其是因为你不会让自己和他人混淆,我会远离它们作为变量名称。

也就是说,我couldn't replicate the problemsource),所以虽然我仍然会更改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的非标准属性是一个坏主意。您可能希望将链中的信息提供给任何指示此信息的人。但这几乎肯定不是你遇到的问题。