次のスクリプトを使用して、マウスオーバーしてクリックするとボックスが開きます。私のページには、開かれるべきボックスがたくさんあり、さらに多くのボックスがあります。これらのボックスを機能させる唯一の方法は、すべてのボックスで新しいtogTriggerを作成することです。同じ単語がページの別の場所で同じボックスを開いた場合でも、新しいtogTriggerが必要です。最終的には、togTrigger1からtogTrigger200などになります。これはあまり実用的ではありません。必要なtogTriggersの量を減らす方法はありますか?
<script type="text/javascript">
<!-- HIDE FROM OLD BROWSERS
/* <![CDATA[ */
var oVTog = {
toggle: function (el) {
var container = el.parentNode;
var para = container.getElementsByTagName('p')[0];
para.style.display = "none";
var isClicked = false;
el.onmouseover = function () {
para.style.display = '';
return false;
};
el.onmouseout = function () {
if (!isClicked)
para.style.display = 'none';
return false;
};
el.onclick = function () {
// if it's clicked, change it to TRUE
// if it's clicked again, change it back to FALSE
isClicked = !isClicked; // toggle
para.style.display = ((isClicked) ? '' : 'none');
return false;
};
}
};
window.onload = function () {
var l = document.getElementById('togTrigger');
oVTog.toggle(l);
l = document.getElementById('togTrigger2');
oVTog.toggle(l);
l = document.getElementById('togTrigger3');
oVTog.toggle(l);
l = document.getElementById('togTrigger4');
oVTog.toggle(l);
l = document.getElementById('togTrigger5');
oVTog.toggle(l);
l = document.getElementById('togTrigger6');
oVTog.toggle(l);
l = document.getElementById('togTrigger7');
oVTog.toggle(l);
l = document.getElementById('togTrigger8');
oVTog.toggle(l);
l = document.getElementById('togTrigger9');
oVTog.toggle(l);
l = document.getElementById('togTrigger10');
oVTog.toggle(l);
l = document.getElementById('togTrigger11');
oVTog.toggle(l);
};
/* ]]> */
//END HIDING -->
</script>
これは、div内の本文にスクリプトを適用する方法です(ページはテーブル内の多くのdivで構成されていますが、/ pはdiv内にあるべきではありませんが、機能しています):
<a href="#" id="togTrigger"><i>text</i></a>
<p class="togContent">
text
</p>
同じdiv内に2つ以上のテキストボックスがある場合、他のtogTriggersはスパン内にあります。
<span><a href="#" id="togTrigger4"><i>text</i></a>
<p class="togContent">
text
</p></span>