divを表示/非表示にするための冗長なプロセスがあり、それをより効率的にする方法はループを使用することだと思います。
現在、私はドキュメント全体に多数のdivを持っていますが、特に6つ扱いたいと思っています。6つのdivに対応する一連のボタンがあります。人がボタンをクリックすると、AIはdiv Aを表示(表示)し、DivのB、C、D、E、Fを非表示にします。私のJavaScriptは次のようなものです:
<a href="#" onclick="ShowMe('A'); return false" />
<a href="#" onclick="ShowMe('B'); return false" />
<a href......etc />
<div id="A">blah...blah</div>
<div id="B">blah...blah</div>
<script type="java....">
function ShowHideDiv(DivName)
{
if(DivName == 'A')
{
var diva = document.getElementById('A');
div.style.visibility = 'visible';
var divb = document.getElementById('B');
div.style.visibility = 'hidden';
etc....
}
else if (DivName == 'B')
{
var diva = document.getElementById('A');
div.style.visibility = 'hidden';
var divb = document.getElementById('B');
div.style.visibility = 'visible';
etc...............
}
}
</script>
先に述べたように、ループの最有力候補ですが、私の質問はループをどのように封じ込めるかです。たとえば、ループがドキュメントオブジェクト全体を通過した場合、非表示にして表示したいdivがあるので、これを回避するにはどうすればよいですか?
私は2つの考えを持っていましたが、他の人が追加の考え、アイデア、テクニックなどを持っていた場合でした。
私のdivにShowHide_Aのように名前に本当に奇妙な接頭辞を付けると、ループはドキュメントオブジェクト内のすべてのdivを調べ、その名前を解析できます。接頭辞がない場合は、次のdivに移動します。もちろん、大きなドキュメントがあり、スクリプトがすべてのオブジェクトを取得して解析してから名前をチェックしている場合、これは非常に非効率的です。
問題のdivを次のような親コンテナにラップします。
次に、私のjavascriptを、DivParentツリーだけをループするように含めることができます。しかし、私のdivがドキュメントモデルのさまざまな場所にある場合はどうなりますか?それらをParentDivに保持し、css位置プロパティでそれらが属する場所に配置しますか?
他のアイデアは大歓迎ですJB