0

我正在尝试将一个对象作为参数传递给 javascript 函数,如下所示:

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

在上面的 js 中,eventandview是来自 jquery calendar 的对象Full Calendar,我将其传递给调用 js 函数。

它抛出一个错误,Expected ']'. 可能有什么问题或如何传递上述对象?

"javascript:ShowEditEventDetails([object Object],1,'Name',[object Object])"在查看萤火虫时显示。

4

3 回答 3

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);
// ...
于 2009-12-24T04:25:35.840 回答
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);
于 2009-12-24T04:26:30.793 回答
0

怎么了

event并且view都是对象。当您将一个对象连接到一个字符串时(正如您对 所做的那样'...ShowEventDetails(' + event + ','...),JavaScript 将该对象转换为一个字符串,从而导致[object Object]您在 FireBug 中看到几乎无用的文本。当 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);
于 2009-12-24T04:30:17.137 回答