我需要根据随机属性值找到随机节点。 为此,我在getElementsByTagName的节点上使用getAtrribute。
似乎当我查找类名作为属性时它不适用于IE(适用于FF)。
任何人都知道getAtrribute是否仅适用于'class'或其他属性? (如果我唯一的课程,我会做一个解决方法。)
答案 0 :(得分:18)
答案 1 :(得分:8)
任何人都知道getAtrribute是否仅适用于'class'或其他属性?
对于HTML属性名称与DOM属性名称(className,htmlFor)不同的所有属性,它都会失败,而且您必须使用DOM样式的大小写。它还为DOM属性不是字符串的属性返回错误的数据类型:
disabled, readOnly, checked, selected, multiple,
compact, declare, isMap, noHref, defer, noResize,
size, cols, rows, width, height, hspace, vspace,
maxLength, tabIndex, colSpan, rowSpan
可能还有其他我错过了!
element.getAttribute(x)
IE中的与正好与说:
相同element[x]
所以通常你应该避免使用getAttribute,而是使用简单的DOM Level 1/2 HTML接口,比如'element.className'。
这最终在IE8中修复。
答案 2 :(得分:2)
IE在这方面被打破了。您可以通过getAttribute("className")
在IE中访问该类,但当然这不是属性,因此它不起作用!IE。
这使您可以选择分支以获取element.className或分支到“className”或“class”的getAttribute。不好。
答案 3 :(得分:1)
您可以从元素中获取所有属性的列表,并以这种方式测试它们的值。此代码段处理IE和WebKit浏览器,并将返回CSS类的字符串值:
var value = "";
var elements = document.getElementsByTagName("div");
for(var i = 0; i < elements.length; i++){
if(typeof elements[i].attributes['class'] == "undefined"){
value = elements[i].getAttribute("class");
} else {
value = elements[i].attributes['class'].nodeValue;
}
alert(value); // careful, this will be a lot of alerts
}
答案 4 :(得分:0)
您可以在此处获取并设置具有跨浏览器兼容性的class属性。
//also works with IE7 and below
//get class attribute value
var class_name = document.getElementById('elem_id').className;
//set class attribute
document.getElementById('elem_id').className = 'new-class-name';