我目前正在尝试使用Flickr API和javascript来生成基于搜索查询的页面,在本例中为dog。当行
var hyperLink = "https://www.flickr.com/photos/" + photo.owner + "/" + photo.id + ".jpg";
运行状态undefined不是关于photo.owner的对象。我可以使用console.log(photo.owner)打印出photo.owner,但无法访问它只是打印出网址中的信息。
完整代码是:
<!DOCTYPE html>
<html lang="en">
<head>
<title>The Flickr Experiment</title>
</head>
<body id ="1">
<script>
function jsonFlickrApi(rsp) {
var str = "";
str +="<h1>Doggo piccies from Flickr</h1>";
str +="<h3>Total piccies: " + rsp.photos.photo.length;
var i;
for (i = 0; i <= rsp.photos.photo.length; i++) {
var photo = rsp.photos.photo[i];
var imageTitle = photo.title;
var hyperLink = "https://www.flickr.com/photos/" + photo.owner + "/" + photo.id + ".jpg";
var imgLink = "https://farm" + photo.farm + ".staticflickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_t.jpg";
str +="<a href=\"" + hyperLink + "\"><img alt=\"" + imageTitle + "\" src=\"" + imgLink + "\"/></a>"
}
document.writeln(str);
}
</script>
<script src="https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=XXXXf&tags=golden-retriever&per_page=100&format=json">
</script>
</body>
</html>
答案 0 :(得分:1)
数组基于零。这意味着如果数组的长度为3,则最高索引为2.因此循环条件必须为
i < rsp.photos.photo.length
//^^ strictly smaller, not smaller or equal
如果没有,你将访问一个不存在的索引(即数组的长度),这将导致undefined
,你得到的错误。
简单示例:
var arr = [1,2,3];
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
console.log(arr[arr.length]);