【发布时间】:2015-02-14 21:14:51
【问题描述】:
我正在尝试使用 PHP 将图片从 MySQL 动态加载到个人资料页面,以及 然后使用 javascript 将它们添加到无序列表中。我希望每个列表项也有 一个like按钮,点击后调用一个javascript函数,将图像名称传递为 它的参数。我已经搜索并找到了有关如何在不传递函数的情况下调用函数的答案 任何变量,但每次我将图像名称添加到函数调用时,控制台日志都会读取 “未定义”。
图片显示正常,imgArray[i] 是一个包含文件名的字符串(例如 photo.jpg) 但是
console.log(imgArray[i])
在onclick 函数中读取未定义。我也试过了
like.setAttribute()
没有任何结果。
function showGallery(imgArray) {
for(var i=0; i < imgArray.length; i++){
var list = document.getElementById("image-list"),
li = document.createElement("li"),
img = document.createElement("img"),
like = document.createElement("a");
img.src = "user_images/" + imgArray[i];
like.className = "button-like";
li.appendChild(img);
li.appendChild(like);
list.appendChild(li);
like.href = "javascript:void(0);";
like.onclick = function() {
console.log(imgArray[i]);
addLike(imgArray[i]);
};
}
}
function addLike(img) {
console.log("Liking.. " + img);
$.ajax({
url: 'like.php',
type: 'POST',
data: {
'photo': img
},
success: function(likes){
console.log(likes);
}
});
}
【问题讨论】:
-
在追加到列表之后移动了onclick函数,因为我读到你不能在元素被添加到DOM之前设置onlick属性。
-
您正在使用 jQuery 进行 ajax 调用,您应该在任何地方使用它。
-
为我的无知道歉,但为什么会这样?
标签: javascript onclick parameter-passing href function-call