-4

私が必要とするのは、文字列を JavaScript 関数に渡すことができるようにすることです。関数は、div の onclick イベントで指定されます。

$("#div").html("<div id='suggestion' onclick='storetag("+response[i]['tagname']+")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>");

ここでは、 response[i]['tagname'] を storetag() に渡すことはできません。これは文字列であり、その周りに quetos が必要なためです

4

3 に答える 3

0

文字列に含まれるコードを処理する必要があるインライン JS を使用する代わりに、次のようにします。

var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>');
div.find('b').html(response[i]['tag']).on('click', function() {
    storetag(response[i]['tagname']);
});
$("#div").html(div);

そうすれば、JS コードを文字列に入れる代わりに、最初に DOM を作成してからイベント ハンドラーを適切にアタッチできます。

そのコードをループで実行する場合(i可能性が高くなります):

  • 使用しないでid="suggestion"ください。ID は一意でなければなりません。
  • 次の JS コードiを使用して、ハンドラーの実行時に適切な値が使用されるようにします。

    var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>');
    div.find('b').html(response[i]['tag']);
    (function(tagname) {
        div.on('click', function() {
            storetag(tagname);
        });
    })(response[i]['tagname']);
    $("#div").html(div);
    
于 2013-10-27T10:04:38.813 に答える