javascript - 未定义不是对象 - 尝试访问 json 对象时

标签 javascript

我目前正在尝试使用 Flickr API 和 javascript 根据搜索查询(在本例中为狗)生成页面。当行

var hyperLink = "https://www.flickr.com/photos/" + photo.owner + "/" + photo.id + ".jpg";

运行它表明 undefined 不是 photo.owner 的对象。我可以使用 console.log(photo.owner) 打印出 photo.owner,但无法访问它来仅打印 url 中的信息。

完整代码为:

<!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>

最佳答案

数组是从零开始的。这意味着如果数组的长度为 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]);

关于javascript - 未定义不是对象 - 尝试访问 json 对象时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45705878/

相关文章:

javascript - 如何在 jQuery 中选择具有 name 属性的元素?

javascript - 获取当前匹配的正则表达式规则

javascript - 当用户单击刷新按钮时从 mysql 表中删除数据

javascript - 为什么我在 JavaScript 中得到 "undefined"

javascript - 流程图的自动间距

javascript - 这个 JavaScript 有什么问题? - 采访蛋糕

javascript - Firefox 附加组件 sdk 边栏不兼容 - 如何警告用户?

javascript - 为什么索引是来自渲染列表的类,在React Hooks中使用map函数?

javascript - 通过 JS 触发的 CSS 动画仅每隔一次点击播放一次

javascript - 来自外部网址的帖子缩略图不会出现在博客中