2011-09-05 37 views
1

我可以創建這樣一個jQuery對象內聯(此代碼工作)「多維度」 JSON在JavaScript

$('#tip').qtip({ 
      content: el.REASON, 
      position: { 
       corner: { 
        target: 'rightMiddle', 
        tooltip: 'leftMiddle' 
       } 
      }, 
      style: { 
       tip: { 
        corner: 'leftMiddle', 
       }, 
       border: { 
        radius: 11, 
        width: 4 
       }, 
       name: 'red' 
      }, 
      show: { 
       ready: true, 
       effect: { type: 'slide' } 
      }, 
      hide: { 
       when: { target: jq, event: 'click' }, 
         effect: function() { 
          $(this).fadeTo(200, 0); 
         } 
      } 
     }) 

現在我想這個JSON移動到一個功能,因爲我有多個構造函數我代碼(此代碼是不工作)

function qtipJSON(el, jq) { 
    return 
     { 
      content: el.REASON, 
      position: { 
       corner: { 
        target: 'rightMiddle', 
        tooltip: 'leftMiddle' 
       } 
      }, 
      style: { 
       tip: { 
        corner: 'leftMiddle', 
       }, 
       border: { 
        radius: 11, 
        width: 4 
       }, 
       name: 'red' 
      }, 
      show: { 
       ready: true, 
       effect: { type: 'slide' } 
      }, 
      hide: { 
       when: { target: jq, event: 'click' }, 
         effect: function() { 
          $(this).fadeTo(200, 0); 
         } 
      } 
     } 
}; 

$('#tip')(qtipJSON(el, qj)) 

我的錯誤是

Uncaught SyntaxError: Unexpected token {

我注意到,這是因爲嵌套的jsons。

工作:

function a(){ 
return {sdasda:'asda',sdasd:'asdas'} 
} 

for(i in a()){ 
document.write(i) 
} 

也在努力:

function a(){ 
return {sdasda:'asda',sdasd:'asdas', aa:{sds:'1212', sddss:'2222'}} 
} 

for(i in a()){ 
document.write(i) 
} 
+2

這不是JSON,它是一個對象字面值。 – nnnnnn

回答

4

替換此

return 
     { 
      content: el.REASON, 
      ... 

本:

return { 
      content: el.REASON, 
      ... 

和歡迎的人被JS分號注入受傷的俱樂部。

+0

生活和學習。謝謝! – Dan

1

,如果你不想因爲隱含分號注入返回一個對象字面不能結束與return線。

通過將左開的左大括號移動到與返回相同的行,它將起作用。

下面是你有什麼輕微的調整:http://jsfiddle.net/FqCVD/(我做了一些字符串文字來補償未定義的變量)。

0

你最後一個例子的問題是缺少:aa後。它應該是

return {sdasda:'asda',sdasd:'asdas', aa: {sds:'1212', sddss:'2222'}} 

您的函數函數qtipJSON(el,jq)在返回結尾處缺少分號。

正如其他人所提到的,問題是線路上的「return」關鍵字本身。當你遇到像這樣的問題時,請嘗試JSLint。它會報告這個錯誤。

+0

你說得對,我在那裏輸錯了。關於你的第三行:我認爲它應該以另一種方式修復 – Dan

-1

的JavaScript將假定你忘了一個半柱,給你這一點:

return {; 
    par: 'val' 
}); 

這將無法正常工作。你應該做的是把你的返回值/對象括在括號中,像這樣:

return ({ 
    par: 'val' 
}); 
+1

嗯。相當肯定你不需要那樣做。如果你的回報本身就是一條線,它就會窒息,但不需要把支具放在支具上。 –