class名で変える

こないだTwitterでお題が出たので昔書いたものを捜したのですけど出てこず、最初から書き直してみたものの、今後も出たらまた書くのめんどいのでここにメモしておくです。

<html><head>
<script>
function changeClass(css_id, html_tag, css_class) {
var z = document.getElementById(css_id);
var y = z.getElementsByTagName(html_tag);
var x = y.length;
var w;
if (x > 0) {
for (i = 0; i < x; i++) {
w = z.getElementsByTagName(html_tag)[i];
if (w.className === css_class) {
w.style.display = ((w.style.display === “none”) ? “block” : “none”);
}
}
}
}
</script>
</head><body>
<input type=”button” name=”dummy” value=”switch” onclick=”changeClass(‘sample_id1’, ‘div’, ‘sample_class’)” />
<hr />
<div id=”sample_id1″>
<div>sample_class0</div>
<div>sample_class1</div>
<div>sample_class2</div>
</div>
<hr />
<div id=”sample_id2″>
<div>sample_class3</div>
<div>sample_class4</div>
<div>sample_class5</div>
</div>
</body></html>

ただ私の場合、ClassNameまで掘り下げず、TagNameレベルで操作しちゃうです。そっちの方が速いし。