2015-12-16 2 views
-1

Я пишу функцию для динамического создания таблицы вычисленных значений из отфильтрованных данных в другой таблице на странице. Я хочу передать эту функцию массив заголовков таблицы (заголовки столбцов), массив данных таблицы и массив параметров таблицы, чтобы установить с помощьюОграничения имени ключа массива javascript

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

var tableAttributes = {border: "1px", "border-collapse": "collapse"}; – juvian

+2

1) Это объект, а не массив. 2) Поместите ключ в кавычки: '' border-collapse''. Итак, ответ на ваш вопрос «да» :) PS. двойные или одинарные кавычки - это просто быть последовательным в их применении. – Andy

+2

Проблема в том, что ваш вопрос - это именно то решение, почему вы просто не попробовали его самостоятельно? – musefan

ответ

0

Я думаю, что это должно быть более идиоматических способ добиться того, что вы пытаетесь ...

var tableAttributes = { 
    "border": "1px", 
    "width": "100%", 
    "height": "50px", 
    "border-collapse": "collapse" 
}; 

Object.keys(tableAttributes).forEach(function(element) { 
    table.setAttribute(element, tableAttributes[element]); 
}); 

Если запустить это, вы должны видеть, что свойства прочерками работы.

0

Вы должны поместить идентификаторы в кавычки, если содержат какие-либо символы, которые находятся в некорректном Unicode «Pattern_Syntax». Это не решение, оно просто убивает симптомы!

Грамматика ECMA-скрипт для имен идентификаторов является

IdentifierName :: 
    IdentifierStart 
    IdentifierName IdentifierPart 

IdentifierStart :: 
    UnicodeIDStart 
    $ 
    _ 
    \ UnicodeEscapeSequence 

IdentifierPart :: 
    UnicodeIDContinue 
    $ 
    _ 
    \ UnicodeEscapeSequence 
    <ZWNJ> 
    <ZWJ> 

(<ZWNJ> и <ZWJ> равны нулю семе WITDH пробельных символов)

Грамматика объясняет далее

UnicodeIDStart :: any Unicode code point with the Unicode property “ID_Start” or “Other_ID_Start”

UnicodeIDContinue :: any Unicode code point with the Unicode property “ID_Continue”, “Other_ID_Continue”, or “Other_ID_Start”

Определения они находятся в некоторых таблицах от консорциума unicode с примером here. Это утомительная задача выжать их всех, но это сделали другие, и вы можете взглянуть на нее one of those here. В большинстве случаев длинный список, но только символы ASCII для печатных материалов имеют большее значение, поэтому не используйте следующие символы для идентификаторов, если вы хотите быть в безопасности и используете только ASCII.

['!','"','#','$','%','&','\'','(',')','*','+',',','-', 
'.','/',':',';','<','=','>','?','@','[','\\',']','^','`', 
'{','|','}','~'] 

Как вы можете видеть $ в нем тоже, но у нас есть JQuery? Вот почему $ явно указан как разрешенный в грамматике ECMA-скрипта.

Смежные вопросы