Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript变量作为img src_Javascript_Jquery - Fatal编程技术网

使用javascript变量作为img src

使用javascript变量作为img src,javascript,jquery,Javascript,Jquery,我正在使用facebook Api获取一些专辑名称和封面照片。根据这些姓名和照片,我试图创建一个jquery移动页面,将它们显示在列表中 我的一些javascript代码如下所示: // Additional initialization code such as adding Event Listeners goes here FB.api('593959083958735/albums', function(response) { if

我正在使用facebook Api获取一些专辑名称和封面照片。根据这些姓名和照片,我试图创建一个jquery移动页面,将它们显示在列表中

我的一些javascript代码如下所示:

// Additional initialization code such as adding Event Listeners goes here
            FB.api('593959083958735/albums', function(response) {
                if(!response || response.error) {
                    // render error
                    alert("Noo!!");
                } else {
                    // render photos
                    for(i=0; i<response.data.length; i++){
                        albumName[i] = response.data[i].name;
                        albumCover[i] = response.data[i].cover_photo;
                        albumId[i] = response.data[i].id;

                        FB.api( albumCover[i], function(response) {
                            if(!response || response.error) {
                                // render error
                                alert("Noo!!");
                            } else {
                               // render photos
                               document.getElementById('coverPhoto').src = response.picture;
                            }
                        });


                        $("ul").append('<li>'+
                        '<a href="testFile.HTML" data-transition="slidedown">'+
                          '<img src= "nothing.jpg" id = "coverPhoto" />'+
                          '<h2>' + albumName[i] + '</h2>'+
                          '<p> Test Paragraph</p>'+
                        '</a>'+
                         '</li>')
                     .listview('refresh');

                    }
                }
            });
//添加事件侦听器等其他初始化代码在此处
FB.api('59395908398735/相册',函数(响应){
如果(!response | | response.error){
//渲染错误
警惕(“Noo!!”);
}否则{
//渲染照片

对于(i=0;i您为每个


ID必须是唯一的

正如黑暗猎鹰所说,ID必须是唯一的

试着做以下几点:

<img src= "nothing.jpg" id = "coverPhoto" />

问题在于您渲染照片的方式。您正在按ID选择元素,但所有元素都具有相同的ID。每个元素都应具有唯一的ID,否则选择器将无法工作

您应该将照片渲染到模板中,而不是渲染模板,然后替换图像的src。可能是这样的:

(function(i) {
    FB.api( albumCover[i], function(response) {
        if(!response || response.error) {
            // render error
            alert("Noo!!");
        } else {
            // render photos
            document.getElementById('coverPhoto'+i).src = response.picture;
        }
    });
})(i);
//添加事件侦听器等其他初始化代码在此处
var albums;//在此函数之外获取相册信息的位置
FB.api('59395908398735/相册',函数(响应){
如果(!response | | response.error){
//渲染错误
警惕(“Noo!!”);
}否则{
//渲染照片

对于(i=0;i,正如所说的id必须是唯一的,您应该为每个元素指定一个类,而使用jQuery时,它必须如下所示:

// Additional initialization code such as adding Event Listeners goes here

var albums; // a place to get album info outside this function

FB.api('593959083958735/albums', function(response) {
  if(!response || response.error) {
    // render error
    alert("Noo!!");
  } else {
    // render photos
    for(i=0; i<response.data.length; i++){
      albums[albumID] = response.data[i] // for accessing the album info eslewhere

      var albumName = response.data[i].name;
      var albumCover = response.data[i].cover_photo;
      var albumID = response.data[i].id;

      FB.api( albumCover, function(response) {
        if(!response || response.error) {
          // render error
          alert("Noo!!");
        } else {
          // render photos
          $("ul").append('<li>'+
            '<a href="testFile.HTML" data-transition="slidedown">'+
            '<img src="'+response.picture+'" id="coverPhoto-'+albumID+'" />'+
            '<h2>'+albumName+'</h2>'+
            '<p>Test Paragraph</p>'+
            '</a>'+
            '</li>')
          .listview('refresh');
        }
      });
    }
  }
});

coverPhoto是你的职业。

HTML id必须是唯一的。是的,你绝对正确。我现在正在尝试解决这个问题。非常感谢你的回答。如果我按照你说的那样做,没有真正的理由需要id,对吗?但是为什么要使用“照片”变量似乎是空的?它是一个全局变量,但仍然在函数外部。这是正常行为吗?我正在尝试按你说的做,但变量是“未定义的”当我尝试附加时…我不知道facebook API。这个函数是异步的吗?如果是这样,你需要在调用中移动渲染。是的,它是异步的!但是如果你把附加放在else中,那么照片就可以按照你的建议工作,但是相册名称超出了范围,所以没有定义:p.哈哈,我不明白为什么它们是o但是,根据我的编程经验(不是js!),ut超出了范围它们应该在范围内。我在这里遗漏了什么?为什么要创建一个专辑名数组?为什么不将每个专辑名设置为循环中的一个变量?这些数组只是为了让代码看起来更容易被其他人理解,稍后会看到。别介意。为什么会有问题?在这个特殊情况下,通过我们有一个响应e在一个响应中。因为首先我使用页面的id来获取相册名称。然后我使用每个相册的id来获取它们的封面照片链接。所以我们有一个响应在另一个响应中。所以我猜必须有另一个变量名称。
// Additional initialization code such as adding Event Listeners goes here

var albums; // a place to get album info outside this function

FB.api('593959083958735/albums', function(response) {
  if(!response || response.error) {
    // render error
    alert("Noo!!");
  } else {
    // render photos
    for(i=0; i<response.data.length; i++){
      albums[albumID] = response.data[i] // for accessing the album info eslewhere

      var albumName = response.data[i].name;
      var albumCover = response.data[i].cover_photo;
      var albumID = response.data[i].id;

      FB.api( albumCover, function(response) {
        if(!response || response.error) {
          // render error
          alert("Noo!!");
        } else {
          // render photos
          $("ul").append('<li>'+
            '<a href="testFile.HTML" data-transition="slidedown">'+
            '<img src="'+response.picture+'" id="coverPhoto-'+albumID+'" />'+
            '<h2>'+albumName+'</h2>'+
            '<p>Test Paragraph</p>'+
            '</a>'+
            '</li>')
          .listview('refresh');
        }
      });
    }
  }
});
$( ".coverPhoto" ).each(function( index ) {
       this.src = response.picture;
   );
});