Javascript 属性紧凑

标签 javascript

有没有一种方法可以更紧凑地分配属性 我真的不想使用 setAttribute 因为它在 ie8 中似乎有问题 该列表适用于所有属性,因此相当长

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

最佳答案

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

我不知道为什么你要尝试通过 HTML 属性而不是仅使用 CSS 设置对齐方式...这不太可靠,因为有许多元素没有 align 属性。 HTML align 也已弃用,一般情况下应避免使用。

您没有说明您可能想要设置的“其他属性”是什么。如果您具体讨论 HTML 属性属性,则可以轻松地通过字符串中的名称来设置它们:

e[a]= v;

但是您需要 a 作为 HTML 属性名称,它是“align”而不是“textalign”。尝试解决像 textAlign 这样的 CSS 覆盖并不会做任何特别的事情,因为没有自动化的方法可以做到这一点,并且已弃用的 HTML 样式属性和 CSS 之间的交互定义不明确。坚持使用属性或 CSS(CSS 是最好的选择);不要同时使用两者。

如果您正在谈论设置任何 CSS 样式属性,正如我可能从名称“textalign”猜到的那样,其操作方式类似:

e.style[a]= v;

但话又说回来,您希望使用确切的样式属性名称“textAlign”而不是“textalign”。

如果您想通过 CSS 名称设置 CSS 样式属性,例如“text-align”,您可以将其自动转换为 DOM 名称:

// convert foo-bar-baz to fooBarBaz
//
var doma= a.replace(/-([a-z])/g, function(m, g) {
    return g.toUpperCase();
});

e.style[a]= v;

如果您确实需要使用区分大小写的名称,例如“textalign”,则必须查找您想要使用的所有属性名称以获取大小写:

var propernames= ['textAlign', 'borderColor', 'paddingTop']; // etc

for (var i= propernames.length; i-->0;)
    if (propernames[i].toLowerCase()===a)
        a= propernames[i];

e.style[a]= v;

忘记设置属性。它与样式属性无关(这是 IE6-7 中的一个错误,它甚至适用于那里的样式),并且您不应该在 HTML 文档的元素上使用它,因为还有其他 IE6-7 错误需要解决那里。坚持使用“DOM Level 2 HTML”直接属性访问内容,这更可靠且更易于阅读。

关于Javascript 属性紧凑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519225/

相关文章:

javascript - 如何使用索引文件查看完整日历?

javascript - 获取刷新 token 不起作用(React.js)

javascript - Chart.js - 如何在雷达图之外放置文本

javascript - 在 JavaScript 中验证日期

javascript - 当鼠标单击该项目时阻止 onClick()

javascript - 为什么我会收到 ParseError?

javascript 未在 heroku 上加载

javascript - 当 Primefaces 全局计数器递增时,为什么我看不到任何网络流量?

javascript - 检查表格单元格中存在什么类型的元素

javascript - WebSocket 是否依赖于硬件?