javascript - 如何用新的图像替换图像,而不是在 API 提交后添加到页面?
问题描述
我正在构建一个随机 DogAPI 图像生成器,您将 1-50 的数字放入表单文本框中,点击发送,它会显示该数量的随机狗照片。
该页面正在运行,但是当您选择一个新的或相同的数字时,它会将新数量的照片添加到页面中,而不是替换它们。帮助!
'use strict';
function getDogImage(text) {
fetch(`https://dog.ceo/api/breeds/image/random/${text}`)
.then(response => response.json())
.then(responseJson => displayResults(responseJson));
}
function watchForm() {
$('form').submit(event => {
event.preventDefault();
var text = $('.number').val();
if (text < 50) {
getDogImage(text);
} else {
alert('Number must be between 1-50')
};
});
}
function displayResults(responseJson) {
console.log(responseJson);
for (let i = 0; i < responseJson.message.length; i++) {
$('.results').append(
`<img src="${responseJson.message[i]}" class="results-img">`
)
};
$('.results').removeClass('hidden');
}
$(function() {
console.log('App loaded! Waiting for submit!');
watchForm();
});
* {
box-sizing: border-box;
}
body {
font-family: 'Roboto', sans-serif;
}
.container {
max-width: 600px;
margin: 0 auto;
}
.hidden {
display: none;
}
<!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">
<title>How Many?</title>
<link rel="shortcut icon" href="#">
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="container">
<h1>How Many Dog Pics Do You Want?</h1>
<p>Pick a number between 1-50</p>
<form>
<input class="number" value="3" type="text" placeholder="1-50?" required>
<input type="submit" value="Show me the doggies!">
</form>
<section class="results hidden">
<h2>Here you go!</h2>
</section>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
<script src="index.js"></script>
</body>
</html>
解决方案
我会清除结果 div 的内容,然后添加新图像。不过,要做到这一点,我需要进行一些更改:
首先,将div<h1>
移出。.results
然后,在附加图像的循环之前,使用.empty()
清除结果 div 的内容。然后您的循环将运行并用新图像填充它。
'use strict';
function getDogImage(text) {
fetch(`https://dog.ceo/api/breeds/image/random/${text}`)
.then(response => response.json())
.then(responseJson => displayResults(responseJson));
}
function watchForm() {
$('form').submit(event => {
event.preventDefault();
var text = $('.number').val();
if (text < 50) {
getDogImage(text);
} else {
alert('Number must be between 1-50')
};
});
}
function displayResults(responseJson) {
console.log(responseJson);
$('.results').empty();
for (let i = 0; i < responseJson.message.length; i++) {
$('.results').append(
`<img src="${responseJson.message[i]}" class="results-img">`
)
};
$('.results').removeClass('hidden');
}
$(function() {
console.log('App loaded! Waiting for submit!');
watchForm();
});
* {
box-sizing: border-box;
}
body {
font-family: 'Roboto', sans-serif;
}
.container {
max-width: 600px;
margin: 0 auto;
}
.hidden {
display: none;
}
<!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">
<title>How Many?</title>
<link rel="shortcut icon" href="#">
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="container">
<h1>How Many Dog Pics Do You Want?</h1>
<p>Pick a number between 1-50</p>
<form>
<input class="number" value="3" type="text" placeholder="1-50?" required>
<input type="submit" value="Show me the doggies!">
</form>
<h2>Here you go!</h2>
<section class="results hidden">
</section>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
<script src="index.js"></script>
</body>
</html>
推荐阅读
- postgresql - Postgres'用于编码“UTF8”的排序规则“NOCASE”不存在'
- python - TypeError:无法将数组数据从 dtype('float64') 转换为 dtype('
我有以下代码:
from sklearn.feature_extraction.text import TfidfVectorizer from nltk.corpus import stopwords i
- xamarin.ios - xamarin.ios Scrollview 和 Editor 滚动编辑器
- javascript - 避免在Vue模板中重复模式
- c# - Datagridview 到 CSV 未正确保存
- python - 如何在 HoloViews 中获取小部件“处理程序”
- symfony - 在 Twig 中打印包含需要依次打印的子变量的变量
- css - 更改 wordpress 中的字体系列覆盖 WPBakery 页面构建器
- arrays - 如何在 PostgreSQL 中创建类型?
- apache-spark - 分别配置 Spark 和 Hadoop(haddop 和 spark 使用哪个版本)