You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tenor GIF API偶现undefined属性读取错误求助

解决Tenor GIF API随机出现的TypeError问题

出现这个错误的核心原因有两个:

  • 你默认Tenor返回的results数组一定有10个元素,但实际API偶尔会返回少于10个结果,此时getRandomInt(10)生成的索引可能超出数组范围,导致top_10_gifs[index]是undefined,自然读不到media_formats。
  • 极少数情况下,返回的某个result对象本身缺失media_formats字段(API返回的异常数据)。

给你修正后的代码,加入了边界检查和字段校验:

var response_objects = JSON.parse(responsetext);
var top_10_gifs = response_objects["results"] || []; // 确保results是数组

// 生成不超过数组实际长度的随机索引
var index = getRandomInt(top_10_gifs.length);
// 兜底:如果数组为空,直接返回避免后续报错
if (top_10_gifs.length === 0) return;

var targetGif = top_10_gifs[index];
var image = document.getElementById("share_gif");

// 逐层检查字段是否存在,避免链式访问报错
if (targetGif?.media_formats?.gif) {
  image.src = targetGif.media_formats.gif.url;
  var dimX = targetGif.media_formats.gif.dims[0];
  var dimY = targetGif.media_formats.gif.dims[1];
} else {
  // 可选:处理字段缺失的情况,比如替换成默认图或者重新获取
  image.src = "默认图地址";
}

补充说明:

  • 用top_10_gifs.length代替硬编码的10,保证随机索引不会越界。
  • 使用可选链操作符?.(ES2020+支持)或者手动逐层判断,避免直接链式访问undefined的属性。
  • 增加数组为空的判断,防止极端情况下的报错。

内容的提问来源于stack exchange,提问作者GERG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:02:04