ie9 getAttribute方法工作

IE 9 getAttribute method working

本文关键字:工作 方法 getAttribute ie9      更新时间:2023-09-26

我正在使用setAttribute方法设置一个名为titleDiv的自定义属性

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

Javascript代码:

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

在除ie9以外的所有浏览器中都可以正常工作。getAttribute也会发生同样的事情。

我在我的代码中大量使用了像上面这样的自定义属性,我不应该改变结构。

是否有其他方法来编写上面的代码,使IE将理解它?

谢谢。

基于问题编辑的更新答案

你正在使用一个标识符,你真的应该远离: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值。出于类似的原因,不仅仅是为了避免混淆自己和他人,我将避免使用它们作为变量名。

也就是说,我无法复制这个问题(源代码),所以尽管我仍然会更改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);
  }
})();

实例| source

如果您使用F12开发人员工具并转到HTML选项卡,您可以看到div确实获得了该属性。(一定要使用开发工具,而不是 "view source"——"view source"将显示从服务器发送的HTML,而不是DOM的当前状态。)


旁注:使用不使用data-前缀的非标准属性是一个坏主意。你最好把这条信息传递给发号施令的人。但这几乎肯定不是你遇到的问题。