我正在使用此脚本来制作所有继承等样式的样式对象。
var style = css($(this));
alert (style.width);
alert (style.text-align);
使用以下内容,第一个警报将正常工作,但第二个警报不会......它正在将 解释-
为我假设的减号。调试器说“未捕获的引用错误”。但是,我不能在它周围加上引号,因为它不是字符串。那么如何使用这个对象属性呢?
我正在使用此脚本来制作所有继承等样式的样式对象。
var style = css($(this));
alert (style.width);
alert (style.text-align);
使用以下内容,第一个警报将正常工作,但第二个警报不会......它正在将 解释-
为我假设的减号。调试器说“未捕获的引用错误”。但是,我不能在它周围加上引号,因为它不是字符串。那么如何使用这个对象属性呢?
看看评论。您将看到,对于 CSS 属性,关键符号与许多属性不兼容。因此,使用驼峰式键符号是当前的方式:
obj.style-attr // would become
obj["styleAttr"]
使用键符号而不是点
style["text-align"]
JavaScript 中的所有数组都是对象,所有对象都只是关联数组。这意味着您可以像引用数组中的键一样引用对象中的某个位置。
arr[0]
或对象
obj["method"] == obj.method
以这种方式访问属性时要记住的几件事:
它们被评估,因此使用字符串,除非您正在使用计数器或使用动态方法名称执行某些操作。
这意味着 obj[method] 会给你一个未定义的错误,而 obj["method"] 不会
如果您使用 JavaScript 变量中不允许使用的字符,则必须使用此表示法。
这个正则表达式几乎总结了它:
[a-zA-Z_$][0-9a-zA-Z_$]*
原始问题的答案是:将属性名称放在引号中并使用数组样式索引:
obj['property-with-hyphens'];
一些人指出您感兴趣的属性是 CSS 属性。带有连字符的 CSS 属性会自动转换为驼峰式大小写。在这种情况下,您必须使用驼峰式名称,例如:
style.textAlign;
但是,此解决方案仅适用于 CSS 属性。例如,
obj['a-b'] = 2;
alert(obj.aB); // undefined
alert(obj['a-b']); // 2
带有 的 CSS 属性-
在 JavaScript 对象中以驼峰命名。那将是:
alert( style.textAlign );
您还可以使用括号表示法来使用字符串:
alert( style['text-align'] );
属性名称只能包含字符、数字、众所周知的$
符号和_
(感谢 pimvdb)。
使用括号:
var notTheFlippingStyleObject = {
'a-b': 1
};
console.log(notTheFlippingStyleObject["a-b"] === 1); // true
关于对象的更多信息:MDN
注意:如果您正在访问样式对象CSSStyleDeclaration,则必须使用 camelCase 从 JavaScript 访问它。更多信息在这里。
alert(style.textAlign)
或者
alert(style["textAlign"]);