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

JavaScript遍历数组渲染电影海报时imdbID拼接错误求助

问题原因

  • 你调用两次map分别提取了海报地址数组、imdbID数组,后者是包含所有筛选结果ID的集合。你在遍历海报数组拼接链接时,直接传入了整个imdbId数组,JS默认会把数组转为逗号拼接所有元素的字符串,因此所有ID都会被拼到每个链接的末尾。
  • 分开提取两个数组的写法完全没有必要,反而会增加索引匹配的成本(如果要按索引取值还得拿forEach的第二个index参数去imdbId数组里取对应值,更容易出bug)。

修正后的代码

const addMoviesToDom = function (movieArray) {
    const movieList = document.querySelector("#movielist");
    movieList.innerHTML = "";
    // 直接遍历原始电影数组,单次循环处理单个电影的所有逻辑
    movieArray.forEach(item => {
        const newLi = document.createElement("li");
        const newLink = document.createElement("a");
        const images = document.createElement("img");
        // 直接取当前循环项的海报和对应ID
        images.src = item.Poster;
        newLink.setAttribute("href", "https://www.imdb.com/title/" + item.imdbID);
        newLink.setAttribute("target", "_blank");
        newLink.append(images);
        newLi.append(newLink);
        movieList.appendChild(newLi);
    })
};
addMoviesToDom(movies);

优化说明

  • 直接遍历原始电影数组,单次循环就能拿到当前单个电影的所有属性,不需要额外拆分多个数组,逻辑更简洁也不会出现数据不匹配的问题。
  • 你也可以给img标签加个alt属性,值可以设为电影标题,更符合无障碍访问规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:01