我正在尝试将使用动态内容创建的变量传递给Javascript中的函数。唯一的问题是在控制台中它返回undefined,但是未定义的值是传递的值
Uncaught ReferenceError: zukeru is not defined profile.html:1 onclick
代码:
function getFriend(friend){
console.log(friend,toString());
document.cookie = "getuser="+friend;
window.location="profile.html"; // change url to your's
}
function getFriendlist(){
var profile_pic_friend = '';
var flist = Cynergi.get('http://:3000/friends?my_username=eq.' + get_user);
var flist_html = 'Friends: ';
$.each(flist, function(i, item) {
var profile_pic_ret = Cynergi.get('http://:3000/profile_pictures?username=eq.' + item.friend_username );
$.each(profile_pic_ret, function(i, item) {
profile_pic_friend = item.pic_location;
});
flist_html = flist_html + "<div><a onclick='getFriend("+item.friend_username+");'><img width='100' height='100' src='"+ profile_pic_friend + "'><br>" + item.friend_username + "</a></div>"
});
$("#flist").html(flist_html);
setTimeout(function() { getFriendlist(); }, 1000);
}
getFriendlist();
答案 0 :(得分:3)
失败的原因是因为item.friend_username
是一个字符串,所以当你生成这样的链接时:
flist_html = flist_html + "<div><a onclick='getFriend("+item.friend_username+");'><img width='100' height='100' src='"+ profile_pic_friend + "'><br>" + item.friend_username + "</a></div>"
您缺少引号以指定它是字符串。由于您没有使用引号包装值,浏览器会了解您传递的内容是一个变量(在您的情况下为zukeru
),并且由于未定义而失败。
要解决此问题,请使用引号包装变量值(对于此特定情况,您需要转义它们),问题将得到解决:
flist_html = flist_html + "<div><a onclick='getFriend(\""+item.friend_username+"\");'><img width='100' height='100' src='"+ profile_pic_friend + "'><br>" + item.friend_username + "</a></div>"