我正在编写一个函数,用于从页面上另一个表中的过滤数据动态创建计算值表。我想传递这个函数一个表头(列标题)数组,一个表数据数组和一个使用
设置的表参数数组var tableAttributes = {border:"1px", width:"100%",height:"50px"};
for (attributeID in tableAttributes) {
table.setAttribute(attributeID,tableAttributes[attributeID]);
}
一切正常,直到我尝试使用" - "创建一个键/值对。登录
var tableAttributes = {border:"1px", border-collapse:"collapse"};
当它抛出错误时:
SyntaxError: missing : after property id
只是用双引号弹出键的情况吗?
答案 0 :(得分:0)
我认为这应该是一种更为惯用的方式来实现你正在尝试的......
var tableAttributes = {
"border": "1px",
"width": "100%",
"height": "50px",
"border-collapse": "collapse"
};
Object.keys(tableAttributes).forEach(function(element) {
table.setAttribute(element, tableAttributes[element]);
});
如果你运行它,你会看到带有破折号的属性。
答案 1 :(得分:0)
如果包含错误定义的Unicode" Pattern_Syntax"中的任何字符,则应将标识符放在引号中。它不是解决方案,它只会杀死症状!
标识符名称的ECMA脚本语法是
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeIDStart
$
_
\ UnicodeEscapeSequence
IdentifierPart ::
UnicodeIDContinue
$
_
\ UnicodeEscapeSequence
<ZWNJ>
<ZWJ>
(<ZWNJ>
和<ZWJ>
为空白字符为零)
语法进一步解释
UnicodeIDStart ::具有Unicode属性“ID_Start”或“Other_ID_Start”的任何Unicode代码点
UnicodeIDContinue ::具有Unicode属性“ID_Continue”,“Other_ID_Continue”或“Other_ID_Start”的任何Unicode代码点
这些定义来自unicode联盟的一些表格,其中包含一个示例here。把它们全部挤出来是一项繁琐的工作,但是其他人已经完成了它,你可以看看它one of those here。一个很长的列表,但在大多数情况下只有printables ASCII字符具有更大的重要性,因此如果您想要安全并且仅使用ASCII,请不要使用以下字符作为标识符。
['!','"','#','$','%','&','\'','(',')','*','+',',','-',
'.','/',':',';','<','=','>','?','@','[','\\',']','^','`',
'{','|','}','~']
正如您所看到的,$
也在其中,但我们有JQuery?这就是为什么$
在ECMA脚本语法中被明确列为允许的原因。