Answers:
您可以在此处阅读有关许多不同浏览器(包括IE)中属性的行为的信息。
element.setAttribute()
即使在IE中也应该做到这一点。你试过了吗?如果它不起作用,则可能
element.attributeName = 'value'
会起作用。
document.getElementById("nav").setAttribute("class", "active");
它可以在Chrome JS控制台中使用,但是在实际页面中却不起作用。顺便说一句,在实际页面中,我.js
在body
范围末尾之前包含了文件。
如果您想完全兼容,那么看起来容易的事情实际上是棘手的。
var e = document.createElement('div');
假设您要添加一个ID为“ div1”。
e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')
除了IE 5.5中的最后一个(这是古老的历史,但XP的默认设置,没有更新),所有这些都将起作用。
但是,当然有偶然性。将IE之前的8不工作:e.attributes['style']
不会出错,但不会实际设置类,它必须是产品类别:e['class']
。
但是,如果您使用的是属性,那么它将起作用:e.attributes['class']
总之,将属性视为文字和面向对象。
从字面上看,您只希望它吐出x ='y'而不考虑它。这就是属性setAttribute和createAttribute的用途(IE的样式异常除外)。但是由于这些对象确实是对象,因此可能会造成混淆。
由于您将不得不正确地创建DOM元素而不是jQuery innerHTML slop,因此我将其视为一个,并坚持使用e.className ='fooClass'和e.id ='fooID'。这是一种设计偏好,但是在这种情况下,尝试将对象视为对您不利的任何事物。
它永远不会像其他方法那样适得其反,只要知道类是className,样式就是对象,所以它是style.width而不是style =“ width:50px”。还要记住tagName,但这已经由createElement设置,因此您不必担心它。
这比我想要的要长,但是JS中的CSS操作是一件棘手的事情。
id
,而不适用于其他类似的东西data-toggle
强制性jQuery解决方案。查找并将title
属性设置为foo
。请注意,由于我是通过id进行操作的,因此会选择一个元素,但是您可以通过更改选择器轻松地在集合上设置相同的属性。
$('#element').attr( 'title', 'foo' );