使用javascript变量作为img src
我正在使用facebook Api获取一些专辑名称和封面照片。根据这些姓名和照片,我试图创建一个jquery移动页面,将它们显示在列表中 我的一些javascript代码如下所示:使用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
// 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;
);
});