我在成功调用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;);给了我“未定义的”#。我做错了什么?
答案 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
,但由于我们不再使用它,因此有点用词不当。