javascript - How can I append data in an array from list using native javascript
问题描述
I am calling data from API and listing the data by name. I want to search and add object by name from the list (using Add Fav Movie button) and store the entire data of that object in an array using native javascript.
I can do this in Angularjs , but less idea using native javascript.
function addListItem(title, listId) {
var ul = document.getElementById(listId);
var li = document.createElement("li");
li.className = 'list-group-item';
li.appendChild(document.createTextNode(title));
ul.appendChild(li);
}
function afterLoad() {
var data = JSON.parse(this.responseText);
var name = document.createElement('img');
const results = data.results;
// loop through items
results.forEach(item => {
addListItem(item.title, "items");
});
name.src = data.title;
document.body.appendChild(name);
}
function afterClick() {
// changed target to focus search
var terms = document.getElementById("search").value.split(' ').join('+');
var request = new XMLHttpRequest();
request.addEventListener('load', afterLoad);
request.open('GET', 'https://api.themoviedb.org/3/search/movie?api_key=8318c431b4fc8a2c4762bf2a52c351ee&query='+terms);
request.send();
}
button.addEventListener("click", afterClick);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css"/>
<title>Get Movies</title>
</head>
<body>
<header id="main-header" class="bg-success text-white p-4 mb-3">
<div class="container">
<h1 id="header-title">Get Movies<span style="display:none">123</span></h1>
<input style="align:right" type="text" class="form-control mr-2" id="search">
<input type="submit" class="btn btn-dark" value="Search" id="button">
</div>
</header>
<div class="container">
<div id="main" class="card card-body">
<h2 class="title">Add Fav Movies</h2>
<form class="form-inline mb-3">
<input type="text" class="form-control mr-2">
<input type="submit" class="btn btn-dark" value="Submit">
</form>
<h2 class="title">Lists</h2>
<ul id="items" class="list-group">
</ul>
</div>
</div>
</body>
</html>
On response JSON I want to select object of movie (which I click on list ) under array key result
. And append that particular movie object on another array. How can I do this ?
解决方案
当您在 input
(最喜欢的电影)中输入电影名称并点击 时submit
,检查输入是否有任何值。如果有,则制作textContent
您最喜欢的电影列表的数组,然后应用过滤器以获取名称与用户输入的值匹配的电影对象
function addListItem(title, listId) {
var ul = document.getElementById(listId);
var li = document.createElement("li");
li.className = 'list-group-item';
li.appendChild(document.createTextNode(title));
ul.appendChild(li);
}
let results;
function afterLoad() {
var data = JSON.parse(this.responseText);
var name = document.createElement('img');
results = data.results;
// loop through items
results.forEach(item => {
addListItem(item.title, "items");
});
name.src = data.title;
document.body.appendChild(name);
}
function afterClick() {
// changed target to focus search
var terms = document.getElementById("search").value.split(' ').join('+');
var request = new XMLHttpRequest();
request.addEventListener('load', afterLoad);
request.open('GET', 'https://api.themoviedb.org/3/search/movie?api_key=8318c431b4fc8a2c4762bf2a52c351ee&query='+terms);
request.send();
}
button.addEventListener("click", afterClick);
const submitBtn = document.querySelector('input[value="Submit"]');
const favMovie = document.querySelector('form > input');
submitBtn.addEventListener('click', function(e) {
e.preventDefault();
const favMovieName = favMovie.value;
if(favMovieName.length > 0) {
const filteredFavMovies = results.filter(({title}) => title.toLowerCase().includes(favMovieName.toLowerCase()));
console.log(filteredFavMovies);
}
});
<header id="main-header" class="bg-success text-white p-4 mb-3">
<div class="container">
<h1 id="header-title">Get Movies<span style="display:none">123</span></h1>
<input style="align:right" type="text" class="form-control mr-2" id="search">
<input type="submit" class="btn btn-dark" value="Search" id="button">
</div>
</header>
<div class="container">
<div id="main" class="card card-body">
<h2 class="title">Add Fav Movies</h2>
<form class="form-inline mb-3">
<input type="text" class="form-control mr-2">
<input type="submit" class="btn btn-dark" value="Submit">
</form>
<h2 class="title">Lists</h2>
<ul id="items" class="list-group">
</ul>
</div>
</div>
推荐阅读
- corda - 通过连接两个模式列值并比较来编写 Corda 自定义查询?
- c# - 从用 jquery 填充的 asp.net 下拉列表中获取文本
- c# - 从列表框中获取选中的项目
- excel - 满足条件后如何创建新行?Excel/VBA
- javascript - 根据Javascript中的参数查找嵌套对象
- excel - VBA - 基于数据值的高级宏更改单元格颜色
- sql - 提取时间持续时间的等效 HOUR
- react-native - InputAccessoryView 在键盘关闭后隐藏
- amazon-web-services - 多台服务器上的数据库用于写入和单个服务器上的读取
- flutter - 如何在 Flutter App 上获取编译/构建日期?