0

オブジェクトをパラメータとしてjavascript関数に次のように渡そうとしています:

    .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])"ファイアバグを見ながら表示されます。

4

3 に答える 3

3

この方法でオブジェクトを渡すことはできません。要素のHTML文字列を連結すると、オブジェクトを含む 演算子spanのすべてのオペランド+が変換されるため、次のようになります。toStringevent"[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いないためです。渡されているため、構文エラーが発生します。とがグローバル変数であると仮定して、代わりにこれを使用します。eventString(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

何が間違っているのか

eventviewは両方ともオブジェクトです。オブジェクトを文字列に連結すると(で行っているように'...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 に答える