2

JavaScript は次のとおりです。

function unhide(divID) {
    var item = document.getElementById(divID);
    if (item) {
        item.className=(item.className=='hidden')?'unhidden':'hidden';
    }
}

HTMLは次のとおりです。

<a href="javascript:unhide('verizon');">VERIZON<br>
<a href="javascript:unhide('sap');">SAP</a><br>

<div id="sap" class="hidden">
    <embed src="videos/sap.mov" height="270" width="480" scale="tofit"></embed>
</div>
<div id="verizon" class="hidden">
    <embed src="videos/verizon.mov" height="270" width="480" scale="tofit"></embed>
</div>

SAP をクリックすると、ビデオが再生されます。Verizon をクリックすると再生されますが、非表示になっていても SAP ビデオは引き続き再生されます。

私はjavascriptが初めてです。

これを行うより良い方法はありますか?既に持っているコードで修正するにはどうすればよいですか?

4

2 に答える 2

0

私の推奨する解決策は、その div の HTML を null に設定することです。結局のところ、それは隠されているので、わざわざそこに置いておく必要があります。

document.getElementByID('div').innerHTML = "";

それにより、そこにあるものを完全に削除します。

そしてそれを非表示にするには(引用符が動作するようにするには、これを少しいじる必要があるかもしれないことに注意してください)

document.getElementByID('div').innerHTML = '<embed src="videos/sap.mov" height="270" width="480" scale="tofit"></embed>';

フラッシュやビデオ プレーヤーのような重い要素の場合は、これがより良い解決策になると思います。これらが 30 個も隠されているページを想像すると、かなり行き詰まります。

于 2013-03-17T22:20:19.507 に答える
0

次のようなことができます。

function unhide(divID) {
 var item = document.getElementById(divID);
 var other = {"verizon":"sap","sap":"verizon"};
 if (item) {
    item.className=(item.className=='hidden')?'unhidden':'hidden';
    var tar = document.getElementById(other[divID]);
    tar.className = 'hidden';
    tar.getElementsByTagName("embed")[0].stopVideo();
 }
}

その他は、停止するビデオの ID に簡単にアクセスできるオブジェクトです。divID からの文字列を使用して、他の文字列を取得します。

次に、その他の要素を取得したら、その子をトラバースしてembed要素を見つけます。[0]最初に一致する要素 (ビデオ) を取得するために使用されます。次に、JavaScriptのstopVideo()メソッドを使用してビデオを停止できます。

于 2013-03-17T22:04:03.627 に答える