我正在做一个作业,我使用fetch进行简单的API调用,以按品种检索狗的图像。我无法解决的一个问题是,当我尝试检索不同品种的图像时,输入值永远不会改变。按提交后,将再次显示默认值“ hound”。我知道我需要将onchange事件附加到我的输入上,但是我不确定在onchange事件触发后如何编写它或如何获取值。任何帮助将不胜感激。我最初是用jQuery编写的,但后来决定用香草Javascript重写它,所以这就是为什么没有jQuery的原因。 我在苦苦挣扎的线上加了“ <---”。
P.S我知道我的代码不是很好,这是我的新手。
JavaScript
function getJson(breed) {
fetch("https://dog.ceo/api/breed/" + breed + "/images/random")
.then((response) => response.json())
.then((responseJson) => displayResults(responseJson));
}
function displayResults(responseJson) {
const dogImage = responseJson.message;
let breedImage = "";
let container = document.createElement("div");
console.log(dogImage);
breedImage += `<img src="${dogImage}">`;
container.innerHTML = breedImage;
document.querySelector(".results-img").innerHTML = "";
document.querySelector(".results-img").appendChild(container);
}
function submitButton() {
let breedName = document.querySelector("#numberValue").value;
breedName.addEventListener().onchange.value; <---
document.getElementById("dog-input").addEventListener("submit", (e) => {
e.preventDefault();
getJson(breedName);
});
}
submitButton();
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dog Api</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
<form>
<input id="numberValue" type="text" value="hound" />
<button type="submit" class="submit-button">Submit</button>
</form>
<section class="results">
<h2>Look at these Dogs!</h2>
<div class="results-img"></div>
</section>
</div>
<script src="main.js"></script>
</body>
</html>
答案 0 :(得分:0)
您不需要onchange
事件处理程序。当前,您在调用breedName
时会将输入的值存储在submitButton
中。这意味着breedName
永远不会改变,因为它只是那时对值的引用。
相反,创建对元素的引用,并在Submit事件处理程序中读取value
属性。这将获得您提交时的价值。
function getJson(breedName) {
console.log(breedName);
}
function submitButton() {
const form = document.querySelector('#dog-form');
const input = document.querySelector('#numberValue');
form.addEventListener('submit', event => {
event.preventDefault();
const breedName = input.value;
getJson(breedName);
});
}
submitButton()
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dog Api</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
<form id="dog-form">
<input id="numberValue" type="text" value="hound" />
<button type="submit" class="submit-button">Submit</button>
</form>
<section class="results">
<h2>Look at these Dogs!</h2>
<div class="results-img"></div>
</section>
</div>
<script src="main.js"></script>
</body>
</html>