2009-12-24 66 views
0

我試圖傳遞對象作爲參數傳遞給javascript函數爲:「預期]」的錯誤,同時使一個對象作爲參數來js函數

.html('<span class="link" onclick="javascript:ShowEventDetails(' + event + ',' 
    + event.Id + ',' + event.Name + ',' + view + ')">' + event.title 
+ '</span>') 

在上述JS,所述eventview是對象從jquery日曆Full Calendar,我通過調用js函數。它會引發一個錯誤,Expected ']'。什麼可能是問題或如何傳遞一個對象如上?

它顯示"javascript:ShowEditEventDetails([object Object],1,'Name',[object Object])"同時看着螢火蟲。

+0

如果您使用ASP.NET,你也可以從得到的錯誤ShowEventDetails函數。我不知道這是否只是Visual Studio 2008 SP1中的一個調試工具,但我花了大約一個小時追蹤了一個非常類似的問題。 –

+0

它只是在頁面加載時引發錯誤。即在構建html本身時。另外它在使用調試器時不會觸及該功能。 – Prasad

+0

用Firebug調試器在Firefox中試一試,看看你是否有任何見解。查看有趣的錯誤消息的控制檯。 –

回答

3

你不能以這種方式傳遞一個對象,因爲當您連接您的span元素的HTML字符串,則+操作的所有操作數都轉換toString,包括event對象,這就是爲什麼你會得到"[object Object]"

'' + {} == "[object Object]"; // an empty object 

我會建議你編程的單擊事件綁定:

// ... 
var $span = $('<span class="link">' + event.title + '</span>'); 
$span.click(function() { 
    ShowEventDetails(event, event.Id, event.Name, view); 
}); 

$('#otherElement').append($span); 
// ... 
+0

工作完美后,謝謝內容管理系統 – Prasad

0

這是因爲ShowEventDetails不通過event,它通過String(event),這是[object Object],這會產生語法錯誤。假設eventview是全局變量,而不是使用:

.html('<span class="link" onclick="javascript:ShowEventDetails(event,' 
     + event.Id + ',' + event.Name + ',view)">' + event.title 
     + '</span>') 

你不應該使用雖然爲的.html這樣的事情。該解決方案是最好的,不需要全局變量:

.addClass("link") 
.click(function() { 
    ShowEventDetails(event, event.Id, event.Name, view) 
}) 
.text(event.title); 
0

什麼錯誤

eventview都是對象。當你將一個對象連接到一個字符串時(正如你使用'...ShowEventDetails(' + event + ','...),JavaScript將該對象轉換爲一個字符串,導致在FireBug中看到幾乎沒用的[object Object]文本。當JavaScript解釋器稍後嘗試將[object Object]解析爲代碼時,它會因爲語法無效而爆發。

如何解決它

要做的就是設置你的事件處理程序的最簡單的事情:

var mySpan = $('<span class="link" />'); 
mySpan.text(event.title); 
mySpan.click(function (ev) { 
    ShowEventDetails(event, event.Id, event.Name, view); 
}); 

parentElement.append(mySpan); 
相關問題