2012-03-16 78 views
1

我使用jQuery與Django做一些表的東西。我有以下的javascript:javascript - 創建字典中的簡單算術

$("#pending_table").tablesorter({ 
    headers: {5 + {{somevariable}}: {sorter:false},6 + {{somevariable}}: {sorter:false}} 
}); 

(我省略了一堆不相關的其他選項)

這是造成麻煩的是增加了headers字典定義相關的部分。看看結果網頁的來源,我可以看到{{somevariable}}正確地轉換爲它的值4,所以它不是Django相關的問題。

總結:「5 + 4:value」不起作用,「9:value」起作用。

我假設我以某種方式得到JavaScript錯誤的語法。

幫助?

回答

3

JavaScript對象文字只允許文字作爲關鍵字。換句話說,你不能有一個計算表達式作爲一個關鍵。例如,這是不允許的:

headers = { 
    (1 + 2): 4 
} 

這就是說,你可以這樣做是爲了規避該限制:

headers = {}; 
headers[1 + 2] = 4; 

在你的情況下,它看起來像你想要做這樣的事情:

var headers = {}; 
headers[5 + someVar] = {sorter: false}; 
headers[6 + someVar] = {sorter: false}; 
$("#pending_table").tablesorter({  
    headers: headers 
});  
+1

難道你不是用JavaScript對象文字誤認JSON字符串嗎?你提到的JSON是一種數據交換格式([RFC here](http://tools.ietf.org/html/rfc4627)),而問題是關於JavaScript對象文字。 – Tadeck 2012-03-16 02:47:39

+0

我一直對此感到困惑,因爲JSON代表「Javascript Object Notation」,所以我認爲它對應於用於在Javascript中聲明對象的符號。我應該使用不同的縮寫詞嗎?無論如何,我編輯了答案。 – 2012-03-16 02:52:29

+0

我相信很難找到它的首字母縮寫 - 這只是JavaScript的對象的字面意思。如果您仍然感到困惑,可以在這裏閱讀JavaScript和JSON表示法中對象文字差異的解釋:[Mozilla Developer Network:JSON](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/ JSON)。 – Tadeck 2012-03-16 03:02:04