我想在单击search
按钮后在输入字段中获取值,并将其设置在localStorage
中,然后将其存储在searchKey
变量中,并将其传递给main()
以在omdbapi中搜索电影。
我尝试在表单中使用onsubmit
,并传入browse(event)
,以查看是否可以在输入字段中获得值。但是,当I console.log(event.target.value)
时,单击search
按钮后,输入值不会显示。
const movieListEl = document.querySelector('.shows');
const searchKey = localStorage.getItem("key");
async function main (event) {
const url = `https://www.omdbapi.com/?apikey=39a36280&s=${encodeURI(event)}`;
const search = await fetch(`${url}`);
const data = await search.json();
// console.log(data.Search)
movieListEl.innerHTML = data.Search.map((movie) => movieHTML(movie)).join("");
}
main(searchKey);
function browse(event){
event.preventDefault();
console.log(event.target.value);
localStorage.setItem("key", event.target.value);
}
function movieHTML (details) {
return `<div class="shows__content">
<figure class="shows__poster">
<img src="${details.Poster}" alt="" class="poster">
</figure>
<div class="poster__description">
<h4 class="poster__title">${details.Title}</h4>
<p class="poster__year">${details.Year}</p>
</div>
</div>
`
}
个字符
2条答案
按热度按时间uajslkp61#
为什么通过
event.target
获取搜索按钮的值?据我所知,event
对象对应于表单提交,所以最好直接获取它。此外,像
onsubmit()
这样的内联属性是一个不好的做法,请使用addEventListener()
方法。然后,调用
main()
函数,更新本地存储,并在提交表单时获取<input>
的值。这是你的最终代码。
个字符
请参阅此JSFiddle以获得使用本地存储的工作版本。
6rqinv9w2#
问题
通过在
browse
函数中访问event.target.value
,您将获得表单的值,而不是输入的值。潜在解决方案
我编辑了你的snipped,并给输入一个名称
searchbarinput
,以便browse
函数可以通过名称引用它。注意:我只是注解掉了
localStorage.setItem
,这样示例就可以在Stack Overflow上运行备选方案:
您还可以将表单(
event.target
)传递给FormData构造函数。个字符