【发布时间】:2020-05-13 05:43:26
【问题描述】:
它在控制台中以及在生成 HTML 时按照我打算的方式运行,但它只适用于 HTML 一次,而它始终适用于控制台。我是否需要在这里使用循环,并以这种方式返回 HTML?我试过地图,但它不是一个数组。编辑:忘记了 HTML,只是添加了它。
<!DOCTYPE html>
<html>
<head>
<title>Pokedex</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1 id="main-header">Pokedex</h1>
<div id="main-container">
</div>
<script src="index.js" type="text/javascript"></script>
</body>
</html>
Javascript
const container = document.getElementById('main-container');
function getPokemon(callback) {
const xhr = new XMLHttpRequest();
const url = 'https://pokeapi.co/api/v2/pokemon/';
xhr.onload = function() {
if(xhr.status === 200) {
const pokemon = JSON.parse(xhr.responseText);
container.innerHTML+=
pokemon.results.map((poke, index)=>{
return `
<div class='cardFront'>
<img src='https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/${(index + 1).toString()}.png'></img>
<h4>${poke.name}</h4>
</div>
`
}).join('');
callback();
}
}
xhr.open('GET', url, true);
xhr.send();
}
function cardBack() {
const endPoint = this.lastChild.previousSibling.innerText;
const xhr = new XMLHttpRequest();
xhr.onload = function() {
if(xhr.status === 200) {
const details = JSON.parse(xhr.responseText);
container.innerHTML+= `
<div class='backSide'>
<h4>${details.name}</h4>
<h4>${details.types[0].type.name}</h4>
</div>
`
}
}
xhr.open('GET', 'https://pokeapi.co/api/v2/pokemon/' + endPoint, true);
xhr.send();
}
getPokemon(()=>{
const cardFront = document.querySelectorAll('.cardFront');
cardFront.forEach((card)=> {
card.addEventListener('click', cardBack);
})
});
【问题讨论】:
-
你的html在哪里?
-
是动态按钮,你要点击哪里?
-
@User1899289003 这是一张口袋妖怪卡。我已经渲染了前端,然后对不同的端点进行 API 调用,以获取后端的数据。当点击正确的信息时,我只是试图让背面呈现。
标签: javascript html ajax dom events