有没有办法以更紧凑的方式分配属性 我真的不想使用setAttribute,因为它似乎在ie8中有缺陷 此列表适用于所有属性,因此非常长
else if(a=="textalign")
{
e.style.textAlign="";
e.align=v
}
答案 0 :(得分:2)
使用类而不是提供所有属性值。
.testClass
{
// set all attribute values here
}
e.className = "test";
见
答案 1 :(得分:2)
if(a=="textalign")
{
e.style.textAlign="";
e.align=v
}
我不知道你为什么要尝试通过HTML属性设置对齐而不仅仅是使用CSS ...由于有许多元素没有align
属性,因此不太可靠。 HTML [{1}}也已弃用,一般应避免使用。
您没有说出您可能想要设置的“其他属性”。如果您特别谈论HTML属性属性,可以通过字符串中的名称轻松设置它们:
align
但是你需要e[a]= v;
作为HTML属性属性名称,它将是'align'而不是'textalign'。尝试解决像textAlign这样的CSS覆盖是没有什么特别的,因为没有自动化的方法,并且不推荐使用的HTML样式属性和CSS之间的交互是不明确的。坚持属性或CSS(CSS是非常可取的);不要同时使用。
如果你正在谈论设置任何CSS样式属性,正如我可能从名称'textalign'猜测的那样,那就是这样做了:
a
但是,再次,你想要使用确切的样式属性名称'textAlign'而不是'textalign'。
如果您想通过CSS名称设置CSS样式属性,例如'text-align',您可以自动将其转换为DOM名称:
e.style[a]= v;
如果您确实需要使用像'textalign'这样的案例有损名称,那么您必须使用所有属性名称的查找来获取案例:
// convert foo-bar-baz to fooBarBaz
//
var doma= a.replace(/-([a-z])/g, function(m, g) {
return g.toUpperCase();
});
e.style[a]= v;
忘记setAttribute。它与样式属性无关(它是IE6-7中的一个错误,它甚至适用于那里的样式),你不应该在HTML文档的元素上使用它,因为还有其他的IE6-7错误需要处理那里。坚持'DOM Level 2 HTML'直接属性访问的东西,更可靠,更容易阅读。
答案 2 :(得分:0)
使用某些框架,例如JQuery,它会解决您的所有浏览器不兼容问题。在JQuery中,您使用.css('attributeName', 'value')
方法。
答案 3 :(得分:0)
.attr({attr1: val, attr2: val})
等jQuery可以轻松实现这一点。它还可以保护您免受许多跨浏览器兼容性错误的侵害。