我正在尝试将对象作为参数传递给javascript函数:
.html('<span class="link" onclick="javascript:ShowEventDetails(' + event + ','
+ event.Id + ',' + event.Name + ',' + view + ')">' + event.title
+ '</span>')
在上面的js中,event
和view
是来自jquery日历Full Calendar
的对象,我将其传递给js函数。
它会抛出错误Expected ']'
。可能有问题或如何传递上述对象?
在查看萤火虫时显示"javascript:ShowEditEventDetails([object Object],1,'Name',[object Object])"
。
答案 0 :(得分:3)
您无法以这种方式传递对象,因为当您连接span
元素的HTML字符串时,+
运算符的所有操作数都将转换为toString
,包括event
对象,这就是您获得"[object Object]"
的原因:
'' + {} == "[object Object]"; // an empty object
我建议您以编程方式绑定click事件:
// ...
var $span = $('<span class="link">' + event.title + '</span>');
$span.click(function () {
ShowEventDetails(event, event.Id, event.Name, view);
});
$('#otherElement').append($span);
// ...
答案 1 :(得分:0)
这是因为ShowEventDetails
未被传递event
,而是传递String(event)
,即[object Object]
,这会产生语法错误。假设event
和view
是全局变量,请改用:
.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);
答案 2 :(得分:0)
有什么不对
event
和view
都是对象。当您将对象连接到字符串时(就像您使用'...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);