如何将事件作为JavaScript变量中编写的HTML中的函数参数传递?

时间:2017-10-20 14:44:32

标签: javascript jquery html html5

我在成功调用ajax后将一些html存储在变量中并将该html附加到div。除了event参数,一切都很好。当我将事件作为java脚本函数的参数传递时,它将img html附加到div但是在点击我得到的图像时出现了意外的标识符'错误。这是代码:

 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 var src = $(this).attr(&#39; src&#39;);给了我“未定义的”#。我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试通过直接传递dataToAppend来更改this变量,如:

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

并修改如下函数:

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

答案 1 :(得分:0)

您正在通过event。事件与元素不同 - 因此它没有src等属性。

首先,让我们考虑HTML需要的样子:

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

如您所见,参数只是单词"this" - 它不需要连接。用JavaScript创建这个HTML就像这样:

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

另外,请考虑将e参数重命名为更具描述性的参数。 e经常提到event,但由于我们不再使用它,因此有点用词不当。