js将变量传递给返回undefined的函数

时间:2015-04-12 01:07:07

标签: javascript jquery html5

我正在尝试将使用动态内容创建的变量传递给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();

1 个答案:

答案 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>"