0

Objects をパラメーターとして JavaScript 関数に渡したいのですが、

私は次のように試してみましたが、実際には、関数をinnerHtmlの関数と呼んでいます..

var tempObj={
        result:results,
        jsobj:jsObj
    }

    str +='<input type="button" onclick="buildCstrWiseChart('+tempObj+')" value="View" class="btn btn-info">';

しかし、これは私にとってはうまくいきません..

SyntaxError: missing ] after element list
[Break On This Error]   

buildCstrWiseChart([object Object])

これで誰でも助けることができます..

4

4 に答える 4

4

オブジェクトを文字列のように扱っていました。それがエラーです。

tempObjグローバル変数ですか?もしそうなら、ただする

str +='<input type="button" onclick="buildCstrWiseChart(tempObj)" value="View" class="btn btn-info">';`
于 2013-05-02T14:41:32.397 に答える
2

オブジェクトの文字列表現は、[object Object]HTML を作成するときにオブジェクトを連結しようとすると、最終的にはそうなります。

onclick="buildCstrWiseChart([object Object])"

これは有効な HTML ではありません。この[object部分は配列の開始として解析されますが、そのObject]部分は有効な配列構文ではありません。

HTML 文字列を作成するのではなく、jQuery を使用して実際に DOM 要素を作成することをお勧めします。

$('<input type="button"/>', {
    value: 'View',
    className: 'btn btn-info'
}).click(function() {
    buildCstrWiseChart(tempObj);
});

次に、.append()または.appendTo()jQuery 関数のいずれかを使用して、その要素を内部に配置したい要素に追加します。

于 2013-05-02T14:43:35.337 に答える
0

注意: OP は、最初の投稿以降に投稿されたコードを変更しました。

問題はこれにあると思います:

...onclick="buildCstrWiseChart('+tempObj+')"...

tempObj文字列以外のものではない場合、それはうまくいかないと思います。どう考えても危険そうです。

本当に必要なのは、実際のオブジェクトを文字列に入れる代わりに、それを参照する値を入れて (おそらく id:object の辞書を作成して)、id をデータ属性として含めるだけです。次に、onclick メソッドでその属性を検索し、指定された ID のオブジェクトを見つけることができます。

于 2013-05-02T14:34:02.723 に答える
-1

さて、問題はあなたの関数にありますsomeFunc

次の例は問題なく動作します。

var f = function (el){
    alert(el)
};

var x = {a: "hey", b: "ho"};

それで

f('hi');
f(x);

エラーは発生しません。

于 2013-05-02T14:33:54.487 に答える