説明
prototype.js ver 1.5以降では特定のスタイルシートクラス名を持つエレメントだけを取得することができます。$$(".note")とするとスタイルシートのnoteクラスが適用されているエレメントだけを取得することができます。取得したエレメントに対して処理を行いますが、prototype.jsではfor()ではなくeachを使って繰り返し処理を行うことができます(イテレータ)。each()を使う事で繰り返しに必要は変数や繰り返し回数などを記述する必要がなくなり記述ミスによる不具合が減少します。
each()で繰り返す際に呼び出す関数には$$()で取得したエレメントへの参照がパラメータとして渡されます。サンプルでは渡されたエレメントのスタイルシートを操作することで枠の太さを変更しています。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>特定の名前を持つオブジェクトにアクセスする</h1>
<form action="./access.cgi" method="get" id="mainForm" name="mainForm">
<input type="button" id="setButton" value="noteクラスだけ枠を太くする">
</form>
<div class="note">ここはnoteクラス</div>
<div class="caution">ここはcautionクラス</div>
<div class="note caution">ここはnoteとcautionクラス</div>
<div class="note">ここもnoteクラス</div>
<div class="caution">ここはcautionクラス</div>
</body>
</html>
window.onload = function(){
document.getElementById("setButton").onclick = function(){
$$(".note").each(function(obj){
obj.style.borderWidth = "4px";
});
}
}