Javascript 关于keyup的更新列表
获取API后,我在列表更新方面遇到一些问题 在每个新字母之后,列表应该更新,并且只显示以键入字母开头的结果 请帮忙:) 以下是我的JS代码:Javascript 关于keyup的更新列表,javascript,api,fetch-api,onkeyup,Javascript,Api,Fetch Api,Onkeyup,获取API后,我在列表更新方面遇到一些问题 在每个新字母之后,列表应该更新,并且只显示以键入字母开头的结果 请帮忙:) 以下是我的JS代码: var input = document.getElementById('input'); input.addEventListener('keyup', getJson); function getJson() { fetch('https://itunes.apple.com/search?term=indie&entity=so
var input = document.getElementById('input');
input.addEventListener('keyup', getJson);
function getJson() {
fetch('https://itunes.apple.com/search?term=indie&entity=song')
.then(function (response) {
return response.json();
})
.then(function (data) {
console.log(data);
let result = '';
data.results.forEach(function (song) {
result += `<li>${song.artistName} - ${song.trackName}</li>`;
});
document.getElementById('result').innerHTML = result;
})
.catch(function (empty) {
console.log(empty);
});
}
var input=document.getElementById('input');
addEventListener('keyup',getJson);
函数getJson(){
取('https://itunes.apple.com/search?term=indie&entity=song')
.然后(功能(响应){
返回response.json();
})
.then(功能(数据){
控制台日志(数据);
让结果=“”;
data.results.forEach(函数(song){
结果+=`${song.artistName}-${song.trackName} `;
});
document.getElementById('result')。innerHTML=result;
})
.catch(函数(空){
console.log(空);
});
}
以下是HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Search songs</title>
</head>
<body>
<div id="app">
<h1>Enter artist name or song:</h1>
<input type="text" id="input">
<div class="loader"></div>
<br><br>
<div id="result"></div>
</div>
<script src="script.js"></script>
</body>
</html>
搜索歌曲
输入艺术家姓名或歌曲:
试试这个。
这是您的html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Search songs</title>
</head>
<body>
<div id="app">
<h1>Enter artist name or song:</h1>
<input type="text" id="term" placeholder="term">
<input type="text" id="entity" placeholder="entity">
<div class="loader"></div>
<br><br>
<div id="result"></div>
</div>
<script src="script.js"></script>
</body>
</html>
搜索歌曲
输入艺术家姓名或歌曲:
和javascript:
var term = document.getElementById('term');
var entity = document.getElementById('entity');
document.addEventListener('keyup', getJson);
function getJson() {
fetch('https://itunes.apple.com/search?term='+term.value+'&entity='+entity.value)
.then(function (response) {
return response.json();
})
.then(function (data) {
let result = '';
try{
data.results.forEach(function (song) {
console.log(song);
result += `<li>${song.artistName} - ${song.trackName}</li>`;
});
}
catch{}
document.getElementById('result').innerHTML = result;
})
.catch(function (empty) {
console.log(empty);
});
}
var term=document.getElementById('term');
var entity=document.getElementById('entity');
document.addEventListener('keyup',getJson);
函数getJson(){
取('https://itunes.apple.com/search?term='+term.value+'&entity='+entity.value)
.然后(功能(响应){
返回response.json();
})
.then(功能(数据){
让结果=“”;
试一试{
data.results.forEach(函数(song){
console.log(歌曲);
结果+=`${song.artistName}-${song.trackName} `;
});
}
捕获{}
document.getElementById('result')。innerHTML=result;
})
.catch(函数(空){
console.log(空);
});
}
或者,如果要为某些元素设置关键帧事件:
var term = document.getElementById('term');
var entity = document.getElementById('entity');
let termAndEntity = [term, entity];
termAndEntity.forEach(function(element){
element.addEventListener('keyup', getJson);
});
function getJson() {
fetch('https://itunes.apple.com/search?term='+term.value.toLowerCase()+'&entity='+entity.value.toLowerCase())
.then(function (response) {
return response.json();
})
.then(function (data) {
let result = '';
try{
data.results.forEach(function (song) {
console.log(song);
result += `<li>${song.artistName} - ${song.trackName}</li>`;
});
}
catch{}
document.getElementById('result').innerHTML = result;
})
.catch(function (empty) {
console.log(empty);
});
var term=document.getElementById('term');
var entity=document.getElementById('entity');
设termAndEntity=[术语,实体];
termAndEntity.forEach(函数(元素){
元素addEventListener('keyup',getJson);
});
函数getJson(){
取('https://itunes.apple.com/search?term=“+term.value.toLowerCase()+”&实体=“+entity.value.toLowerCase())
.然后(功能(响应){
返回response.json();
})
.then(功能(数据){
让结果=“”;
试一试{
data.results.forEach(函数(song){
console.log(歌曲);
结果+=`${song.artistName}-${song.trackName} `;
});
}
捕获{}
document.getElementById('result')。innerHTML=result;
})
.catch(函数(空){
console.log(空);
});
}我不确定情况是否如此,但您应该知道,javascript不会仅仅因为您更改了它而呈现某些内容。有AnimationFrames,也许您应该使用
requestAnimationFrame()
来更新html。更多关于requestAnimationFrame()
和事件循环的信息-谢谢,它成功了!:)你知道如果找不到任何信息,我如何显示信息吗?此外,当列表在每次键控后刷新时,我应该添加一些加载程序。