HTML, CSS, 바닐라 자바스크립트로 날씨 변환기를 구축하는 방법 (제2부분: 자바스크립트 추가)
28927 단어 webdevtutorialjavascriptbeginners
에서 JavaScript 기능을 구성합니다.
너는 두 번째 부분에서 무엇을 배울 것인가
document.getElementById
사용 방법addEventListener
사용 방법문서 사용 방법getElementById
document.getElementById
메서드는 HTML 파일의 요소에 id
이름으로 액세스할 수 있도록 합니다.우리가 방문하고자 하는 첫 번째 요소는
input
요소입니다.index.js
파일에서 document.getElementById
방법으로 입력한 숫자에 접근하여 numInputValue
이라는 변수에 분배한다.const numInputValue = document.getElementById("number");
다음에 convert 단추를 방문하여 convertBtn
변수에 분배합니다.const convertBtn = document.getElementById("convert");
그리고 result-div
을 방문하여 result
변수에 분배한다.const result = document.getElementById("result");
마지막으로 리셋 버튼에 액세스하여 resetBtn
변수에 할당합니다.const resetBtn = document.getElementById("reset");
이것이 바로 우리의 코드가 지금까지 index.js
파일에 있는 모습이다.const numInputValue = document.getElementById("number");
const convertBtn = document.getElementById("convert");
const result = document.getElementById("result");
const resetBtn = document.getElementById("reset");
온도 변환기 기능 생성하기
사용자가
convert
버튼을 클릭할 때마다 이 기능이 시작되어 사용자에게 결과를 표시합니다.우선,
temperatureConverter
이라는 arrow 함수를 만듭니다.const temperatureConverter = () => {
}
함수 내부에서value 속성에서 사용자 입력을 가져와 변수에 저장해야 합니다.이 기능은 JavaScript에서 value 속성을 사용하여 수행할 수 있습니다.
let userInput = numInputValue.value;
다음으로 우리가 해야 할 일은 섭씨에서 화씨로의 전환을 계산하는 것이다.이것이 바로 우리가 사용할 알고리즘이다.
(Celsius * 9/5) + 32
섭씨 userInput
은 섭씨 온도를 대표하며, 우리는 Math.floor
을 사용하여 계산을 아래로 가장 가까운 정수로 반올림하기를 희망한다.우리는 이 결과를
fahrenheit
이라는 변수에 분배할 것이다.let fahrenheit = Math.floor((userInput * 9) / 5 + 32);
그리고 사용자에게 변환 결과를 보여주는 템플릿 문자열을 만들 것입니다.const conversionString = `<p>${userInput} degrees Celsius is</p> <p>${fahrenheit} degrees Fahrenheit </p>`;
그리고 우리는 날씨 온도가 좋은지 더운지 추운지에 따라 일련의 호응을 만들 것이다.잘못된 사용자 입력에도 응답할 것입니다.const responsesArr = [
"Invalid input. Try again.",
`<p class="result-text">Ohh..that's HOT<i class="fas fa-burn"></i></p>${conversionString}`,
`<p class="result-text">Not to bad<i class="far fa-sun"></i></p> ${conversionString}`,
`<p class="result-text">Getting colder <i class="fas fa-icicles"></i></p>${conversionString}`
];
변환기 기능의 마지막 부분은 if/else
문장을 만드는 것입니다. 이 문장은 입력 결과에 따라 사용자에게 표시할 정확한 응답을 결정합니다.첫 번째 조건은 사용자가 입력을 제공하지 않았거나 사용자가 제공한 입력이 -90에서 57의 주어진 숫자 범위를 초과했는지 검사한다.
잘못된 입력이라면,
innerHTML
방법으로 responsesArr
의 잘못된 응답을 사용자에게 보여 드리겠습니다. if (userInput > 57 || userInput < -90 || userInput === "") {
result.innerHTML = responsesArr[0];
}
30에서 57 사이를 입력하면 "Oh h.that's HOT"메시지가 표시됩니다.else if (userInput >= 30 && userInput <= 57) {
result.innerHTML = responsesArr[1];
}
20에서 29 사이를 입력하면 "나쁘지 않다"는 메시지를 사용자에게 표시합니다.else if (userInput >= 20 && userInput <= 29) {
result.innerHTML = responsesArr[2];
}
19 이하의 값을 입력하면 냉각 메시지가 표시됩니다. else {
result.innerHTML = responsesArr[3];
}
이것이 바로 전체 temperatureConverter
함수의 외관이다.const temperatureConverter = () => {
let userInput = numInputValue.value;
let fahrenheit = Math.floor((userInput * 9) / 5 + 32);
const conversionString = `<p>${userInput} degrees Celsius is</p> <p>${fahrenheit} degrees Fahrenheit </p>`;
const responsesArr = [
"Invalid input. Try again.",
`<p class="result-text">Ohh..that's HOT<i class="fas fa-burn"></i></p>${conversionString}`,
`<p class="result-text">Not to bad<i class="far fa-sun"></i></p> ${conversionString}`,
`<p class="result-text">Getting colder <i class="fas fa-icicles"></i></p>${conversionString}`
];
if (userInput > 57 || userInput < -90 || userInput === "") {
result.innerHTML = responsesArr[0];
} else if (userInput >= 30 && userInput <= 57) {
result.innerHTML = responsesArr[1];
} else if (userInput >= 20 && userInput <= 29) {
result.innerHTML = responsesArr[2];
} else {
result.innerHTML = responsesArr[3];
}
};
addEventListener 메서드 사용 방법
JavaScript의
addEventListener
메서드는 특정 이벤트를 수신한 다음 해당 이벤트에 대한 함수를 실행합니다.우리가 듣고 있는 사건은
click
사건이다.사용자가 convert 단추를 눌렀을 때 temperatureConverter
함수를 실행합니다.temperatureConverter
함수의 바로 아래에 이 사건 탐지기를 추가합니다.convertBtn.addEventListener("click", temperatureConverter);
오른쪽 아래에 있는 Go Live
버튼을 클릭하여 VS 코드의 로컬 서버를 시작합니다.그리고
convert
버튼을 누르면 무효 메시지가 나타납니다.지금 45를 입력하면 정확한 변환과 정보를 볼 수 있습니다.
현재
temperatureConverter
기능은 사용자가 convert
버튼을 클릭할 때만 실행됩니다.그러나 우리도 사용자가 enter
키를 눌러도 결과가 나오도록 기능을 추가하기를 희망한다.우리는
keydown
사건을 탐지하기 위해 다른 사건 탐지기를 추가할 수 있으며, temperatureConverter
키를 눌렀을 때 enter
을 실행할 수 있다.numInputValue.addEventListener("keydown", (e) => {
if (e.key === "Enter") {
temperatureConverter(e);
}
});
e
매개 변수는 실행 중인 이벤트 대상을 표시합니다.사용자가 입력을 제공하지 않고 enter 키를 누르면 잘못된 메시지를 표시할 수 있습니다.
document.body.addEventListener("keydown", (e) => {
if (e.key === "Enter" && numInputValue.value === "") {
result.innerHTML = "Please provide an input.";
}
});
JavaScript 코드의 마지막 부분은 재설정 함수를 만드는 것입니다.사용자가
reset
단추를 눌렀을 때, 우리는 다른 이벤트 탐지기로 결과를 지울 수 있습니다.resetBtn.addEventListener("click", () => {
result.innerHTML = '<i class="fas fa-fire"></i>';
numInputValue.value = "";
});
올바른 입력을 입력하고 재설정 버튼을 클릭합니다.결과가 성공적으로 지워진 것을 보셔야 합니다.JavaScript 파일의 모든 코드입니다.
const numInputValue = document.getElementById("number");
const convertBtn = document.getElementById("convert");
const result = document.getElementById("result");
const resetBtn = document.getElementById("reset");
const temperatureConverter = () => {
let userInput = numInputValue.value;
let fahrenheit = Math.floor((userInput * 9) / 5 + 32);
const conversionString = `<p>${userInput} degrees Celsius is</p> <p>${fahrenheit} degrees Fahrenheit </p>`;
const responsesArr = [
"Invalid input. Try again.",
`<p class="result-text">Ohh..that's HOT<i class="fas fa-burn"></i></p>${conversionString}`,
`<p class="result-text">Not to bad<i class="far fa-sun"></i></p> ${conversionString}`,
`<p class="result-text">Getting colder <i class="fas fa-icicles"></i></p>${conversionString}`
];
if (userInput > 57 || userInput < -90 || userInput === "") {
result.innerHTML = responsesArr[0];
} else if (userInput >= 30 && userInput <= 57) {
result.innerHTML = responsesArr[1];
} else if (userInput >= 20 && userInput <= 29) {
result.innerHTML = responsesArr[2];
} else {
result.innerHTML = responsesArr[3];
}
};
convertBtn.addEventListener("click", temperatureConverter);
numInputValue.addEventListener("keydown", (e) => {
if (e.key === "Enter") {
temperatureConverter(e);
}
});
document.body.addEventListener("keydown", (e) => {
if (e.key === "Enter" && numInputValue.value === "") {
result.innerHTML = "Please provide an input.";
}
});
resetBtn.addEventListener("click", () => {
result.innerHTML = '<i class="fas fa-fire"></i>';
numInputValue.value = "";
});
3부에서는 모든 CSS 스타일을 프로젝트에 추가합니다.Final code
Reference
이 문제에 관하여(HTML, CSS, 바닐라 자바스크립트로 날씨 변환기를 구축하는 방법 (제2부분: 자바스크립트 추가)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codergirl1991/how-to-build-a-weather-converter-with-html-css-and-vanilla-javascript-part-2-adding-javascript-59f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)