重複の可能性:
Javascriptは配列の最後のアイテムの属性のみを設定します
基本的なjavascript+dom学習に飛び込んだばかりですが、最後の要素だけが切り替えられていることを完全に理解できませんか?なぜイベントを要素にアタッチするのか迷っていますが、以前のイベントも上書きしているようです。
JavaScript:
window.onload = function() {
// Simple log
var c = function(x) {
return console.log(x);
};
var hasClass = function(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
};
var toggleClass = function(ele, cls) {
if (!hasClass(ele, cls)) {
ele.className += " " + cls;
} else {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, '');
}
};
var toggle = function(clk) {
c(clk);
}
var el = document.getElementsByClassName('time');
for (i = 0; i < el.length; i++) {
var btnToggle = el[i].getElementsByClassName('btn-toggle')[0];
var clk = el[i].getElementsByClassName('clock')[0];
btnToggle.addEventListener('click', function() {
toggle(clk)
}, false);
}
};
HTML:
<section>
<div class="time">
<a href="#" class="btn-toggle">Show the time</a>
<div class="clock">Clock1</div>
</div>
<div class="time">
<a href="#" class="btn-toggle">Show the time</a>
<div class="clock">Clock2</div>
</div>
<div class="time">
<a href="#" class="btn-toggle">Show the time</a>
<div class="clock">Clock3</div>
</div>
</section>
賢者のアドバイスをありがとう!