element.onclick window 加载后的事件在 javascript 中不工作
element.onclick event after window load not working in javascript
我需要帮助。我希望在单击其兄弟姐妹时显示元素。我想用纯 javascript.
来做这些事情
当我 运行 我的代码和我点击浏览器控制台(Chrome 和 Firefox)时,既没有任何反应也没有显示错误。
我认为一个问题可能是 window.onload 函数中的 onclick 事件,但我找不到解决它的方法。
这是我的 HTML 代码:
<div class="year_element">
<h3 class="year">2015</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=2015+Marzo">Marzo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1998</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=1998+Mayo">Mayo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1987</h3>
<ul class="hide_months months">
</ul>
</div>
这是我的 JavaScript 代码:
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i += 1) {
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
你的回答告诉我代码有效,给了我问题的关键:另一个文件 js 正在执行一个 window.onload 函数,所以这个函数不起作用。这已通过使用修复。
window.addEventListener("load", one_function, false);
window.addEventListener("load", another_function, false);
谢谢。
你 运行 你的 javascript 正确吗?
我将所有内容粘贴到 html 文件中,点击似乎有效。
它添加和删除 hide_months class。我没有你的 css 来使 Marzo/Mayo 消失,但看起来加载和点击工作正常。
<script type="text/javascript">
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i += 1) {
console.log('found some elements');
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
</script>
嗯,我试过你的例子,它在色度上运行良好。
我只是添加了应该用于此目的的 CSS。
<html>
<body>
<div class="year_element">
<h3 class="year">2015</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=2015+Marzo">Marzo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1998</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=1998+Mayo">Mayo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1987</h3>
<ul class="hide_months months">
</ul>
</div>
<script>
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i++) {
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
</script>
<style>
.year_element{font-weight: normal;}
.year{font-weight: bold; cursor: pointer;}
.months{color: green;}
.hide_months{display: none;}
</style>
</body>
</html>
我需要帮助。我希望在单击其兄弟姐妹时显示元素。我想用纯 javascript.
来做这些事情当我 运行 我的代码和我点击浏览器控制台(Chrome 和 Firefox)时,既没有任何反应也没有显示错误。
我认为一个问题可能是 window.onload 函数中的 onclick 事件,但我找不到解决它的方法。
这是我的 HTML 代码:
<div class="year_element">
<h3 class="year">2015</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=2015+Marzo">Marzo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1998</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=1998+Mayo">Mayo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1987</h3>
<ul class="hide_months months">
</ul>
</div>
这是我的 JavaScript 代码:
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i += 1) {
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
你的回答告诉我代码有效,给了我问题的关键:另一个文件 js 正在执行一个 window.onload 函数,所以这个函数不起作用。这已通过使用修复。
window.addEventListener("load", one_function, false);
window.addEventListener("load", another_function, false);
谢谢。
你 运行 你的 javascript 正确吗? 我将所有内容粘贴到 html 文件中,点击似乎有效。 它添加和删除 hide_months class。我没有你的 css 来使 Marzo/Mayo 消失,但看起来加载和点击工作正常。
<script type="text/javascript">
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i += 1) {
console.log('found some elements');
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
</script>
嗯,我试过你的例子,它在色度上运行良好。 我只是添加了应该用于此目的的 CSS。
<html>
<body>
<div class="year_element">
<h3 class="year">2015</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=2015+Marzo">Marzo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1998</h3>
<ul class="hide_months months">
<li><a href="/month_results?query=1998+Mayo">Mayo</a>
</li>
</ul>
</div>
<div class="year_element">
<h3 class="year">1987</h3>
<ul class="hide_months months">
</ul>
</div>
<script>
window.onload = function() {
var years = document.getElementsByClassName('year');
//When doing click on a year, show months
for (var i = 0; i < years.length; i++) {
//Function needs event as parameter to work
years[i].onclick = function(event) {
var selectedYear = event.target;
var month_list = selectedYear.nextSibling.nextSibling;
//Showing months
if (month_list.classList.contains('hide_months')) {
month_list.classList.remove('hide_months');
//Hiding months
} else {
month_list.classList.add('hide_months');
}
};
};
}
</script>
<style>
.year_element{font-weight: normal;}
.year{font-weight: bold; cursor: pointer;}
.months{color: green;}
.hide_months{display: none;}
</style>
</body>
</html>