Javascript属性紧凑

时间:2009-10-05 10:12:28

标签: javascript

有没有办法以更紧凑的方式分配属性 我真的不想使用setAttribute,因为它似乎在ie8中有缺陷 此列表适用于所有属性,因此非常长

else if(a=="textalign")
{
    e.style.textAlign="";
    e.align=v
}

4 个答案:

答案 0 :(得分:2)

使用类而不是提供所有属性值。

.testClass 
{
   // set all attribute values here
}

e.className = "test";

element.className

答案 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可以轻松实现这一点。它还可以保护您免受许多跨浏览器兼容性错误的侵害。