Javascript 错误 - 页面加载时事件监听器错误
2022-05-09
153
我正在开发一个天气应用程序,页面加载后出现此错误 “未捕获 TypeError:无法读取 null 的属性‘addEventListener’”在第 36 行
这是 Html 的代码片段:
<div class="weather - app">
<div class="panel">
<form >
<input type="text"
class="search"
placeholder="Search Location .."/>
<button type="submit"
class="submit">
<i class="fa fa-search"></i>
</button>
</form>
<ul class="cities">
<li class="city">Paris</li>
<li class="city">Las Vegas</li>
<li class="city">Japan</li>
<li class="city">Sfax</li>
</ul>
</div>
</div>
<script src = "main.js" ></script>`
.............................................................................
以及 main.js 的代码片段:
const app = document.querySelector('.weather-app');
const form = document.querySelector('.form');
const search = document.querySelector('.search');
const btn = document.querySelector('.submit');
const cities = document.querySelectorAll('.city');
//add sumbit event to the form
form.addEventListener('submit', (e) => {
e.preventDefault();
//if input field(search bar) empty throw an alert
if (search.value.length == 0) {
alert('Please type in a City name !');
} else {
//change default city name to the one written in search bar
cityInput = search.value;
search.value = "";
app.style.opacity = "0";
}
});
2个回答
querySelector
使用 CSS 选择器在您的页面中查找元素,
您传递的选择器是
.form
,这意味着
查找带有名为 form 的类的元素
,而这不会出现在您的 HTML 中的任何位置,因此正确的选择器是没有
.
的“form”
因为
.
表示类搜索
因此完整代码是
const form = document.querySelector('form');
或者您可以将类添加到表单
<form class="form">
...
有关 CSS 选择器的更多详细信息,请参阅此 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors
Mohammad Esam
2022-05-09
您的 html 中没有 .form 类
<div class="weather - app">
<div class="panel">
<form >
<input type="text"
class="search"
placeholder="Search Location .."/>
<button type="submit"
class="submit">
<i class="fa fa-search"></i>
</button>
</form>
<ul class="cities">
<li class="city">Paris</li>
<li class="city">Las Vegas</li>
<li class="city">Japan</li>
<li class="city">Sfax</li>
</ul>
</div>
</div>
<script src = "main.js" ></script>
如果您想在 DOM 中查询标签,请删除 .
const form = document.querySelector('.form');
top16Dev
2022-05-09