이벤트 리스너를 만들었지 만 내 기능을 호출하지 않습니다. 요소가 innerHTML에 있거나 무엇 때문에 있는지 확실하지 않습니다. console.log로 함수를 대체하면 작동하도록 이벤트 리스너가 듣고 있다는 것을 알 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.addEventListener가 내 함수를 호출하지 않습니다.
html 코드 :
<!DOCTYPE html>
<html lang="en">
<head>
<title>Weather App</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--********************* Project **************************-->
<form>
<div id="citySearchForm"></div>
<div id="weather"></div>
<p><span id="temp"></span></p>
<p><span id="wind"></span></p>
</form>
<!--******************* Script Files **********************-->
<script src="./main.js"></script>
</body>
</html>
내 JS 코드 :
var defaultDiv = true;
var cityName;
var citySearch = document.getElementById('citySearchForm');
if(defaultDiv === true) {
citySearch.innerHTML += '<p>Choose a city:</p>'+
'<input type="text" placeholder="Enter a city" id="getCitiesInput"></input>'+
'<button type="submit">Search</button>';
} else {
citySearch.innerHTML += '<p>Select the correct city:</p>'+
'<select id="resultOptions">'+
'<option value='+ "" + '></option>'+
'</select>'+
'<button type="submit">See Results</button>';
};
console.log(cityName);
citySearch.addEventListener("submit", searchFormFunc);
function searchFormFunc(e) {
console.log('working');
if(defaultDiv === true) {
console.log('fired 1');
cityName = document.getElementById('getCitiesInput').value;
console.log(cityName);
defaultDiv = false;
} else {
console.log('fired 2');
selectedCity = document.getElementById('resultOptions').value;
console.log(selectedCity);
}
}
핸들러 내부에서 함수를 정의했지만 호출하지 않았습니다. 당신이 기능을 전혀 원하지 않는 것처럼 보입니다. 그냥'function searchCity (e) {'와'function getCityResults (e) {'와 그 닫는 중괄호를 제거하십시오. –
'searchFormFunc'는 어떻게해야하나요? 지금은 호출되지 않는 두 가지 함수를 생성하고, 두 개의 로그 메시지를 작성하고 종료하며, 두 함수에 대한 모든 참조를 잃어 버려 액세스 할 수 없게 만듭니다. – Xufox
잘못된 HTML이 있음을 유의하십시오. 'options' 태그는 닫는 중괄호가 없기 때문에'option'을 의미했는지 확신 할 수 있습니다. –