2017-10-20 2 views
0

私は、成功したajax呼び出しの後にいくつかのhtmlを変数に格納し、そのhtmlをdivに追加しています。イベントパラメータを除いてすべてが問題ありません。 Javaスクリプト関数のパラメータとしてイベントを渡しているとき、img htmlをdivに追加していますが、画像をクリックすると「Unexpected identifier」エラーが表示されます。JavaScript変数内に記述されたHTMLの関数パラメータとしてイベントを渡すにはどうすればよいですか?

var dataToAppend = "<img onclick='getImgSrc("+event+")' data-toggle='modal' data-target='#msgPhotoModal' class='modal-message-img getSrc' src='" + data[i].ImgUrl + "' />" + 

私はdataToAppend変数私が取得していますデバッグしています:

<img onclick='getImgSrc([object Event])........' 

と機能は次のとおりです。

また
function getImgSrc(e) { 
     debugger; 
     var src = $(this).attr('src'); 
     $('.msgImg').attr('src', src); 
    } 

するvar SRC = $(この)ここでは、コードです。 attr( 'src');私に「未定義」を与えている。私は間違って何をしていますか?

+0

イベントを処理するには 'jQuery'を使うべきです。コールバックは 'event'オブジェクトで呼び出されます。 –

+0

'dataToAppend'パートに沿ってコードを投稿できますか? – Lixus

+0

あなたは 'event'を渡して、それが要素であるかのように' src'属性を取得しようとしています。 'onclick = 'getImgSrc(this)' ...'を 'this'という単語を使って試して、連結を削除したいと思います。 – Santi

答えて

1

は直接のようなthisを渡すことによってdataToAppend変数を変更してください:

var dataToAppend = "<img onclick='getImgSrc(this)' data-toggle='modal'..." 

などの機能を変更する:あなたはeventを渡している

function getImgSrc(obj) { 
    debugger; 
    var src = $(obj).attr('src'); 
    $('.msgImg').attr('src', src); 
} 
+0

ありがとう、それは動作します! – diamond421

+0

うれしかった! –

0

。イベントは要素と同じではないため、srcのような属性はありません。

まず第一に、のは、HTMLのように見えるために必要なものを考えてみましょう:あなたが見ることができるように

<img src="/images/MyImage.jpg" onClick="getImgSrc(this);" /> 

、パラメータは、単に言葉"this"である - それは連結を必要としません。 JavaScriptでこのHTMLを作成することはそれほどのように行われることになります。

var dataToAppend = "<img onclick='getImgSrc(this)' ... "; 

また、もう少し説明的なものにあなたのeパラメータの名前を変更することを検討してください。 eはしばしばeventを指しますが、もはやこれを使用していないので、それはちょっとした誤解です。

関連する問題