【发布时间】:2021-02-09 02:34:08
【问题描述】:
我试图从一个提供电影列表的 API 获取数据,这就是我实现结果呈现的方式。
const getAllData = async () => {
const movieData = await getMovies()
const movieContainer = movieData.map((movie)=> {
const listItem = `
<li class="movie">
<img src="${movie.Poster}"></img>
<h1>
${movie.Title}
</h1>
<h2>Release Year: ${movie.Year}</h2>
<p>
<button onclick="getDetails('${movie.imdbID}')">
Click for more details
</button>
</p>
</li>
`;
return listItem
}).join('')
document.getElementById("movieList").innerHTML = movieContainer;
}
这里是按钮点击调用的getDetails函数。
function getDetails(id){
sessionStorage.setItem('movieId', id);
window.location = 'movie.html';
return false;}
此代码按预期工作。但是,我遇到的问题是我想用事件侦听器而不是内联 HTML 事件处理程序来实现这个逻辑。我怎么能实现这个? 我是否需要对当前代码进行任何重大更改?
【问题讨论】:
-
请注意,这种方法很容易受到 HTML 字符串注入的 XSS 攻击。
标签: javascript async-await scope event-handling