0

div要素を表示/非表示にする簡単な機能があります。それを行うためのJavaScript関数があります。これを Opera でデバッグしました。この関数は、div 要素に隠し値を適切に設定します。div 要素が消えるのがわかります。ただし、関数が戻ると、div 要素が再表示されます。JavaScript 関数は独自のファイル main.js にあります。

function showhide(name){
    var elem = document.getElementById(name) ;
    if( elem.hidden == false ) {
        document.getElementById(name).hidden = true ;
    } else {
        document.getElementById(name).hidden = false ;
    }
}

Html は次のとおりです。

<div class=wrap><p>
<div class=sidebar>
    <FORM><input type="submit" value="Toggle" onclick="showhide('specname');"/></FORM></div>
<div class=main>main Div
    <div id="specname">collapsible text</div></div></p></div>.

値が適切に設定されていることを確認するために、javascript 関数 showhide にデバッグ ブレークポイントを設定しました。ただし、関数が戻ると、値はリセットされます。

それはおそらく私が見逃している単純なものですが、見えないようですか?何か案は?ありがとう!

答えは私の問題を解決しました。送信によってページが再描画され、変更内容が失われたという事実を見逃していました。type=submit を type=button に変更しました。そして、フォームをボタン型の入力要素だけに削除しました。それはとてもうまくいきました。皆さん、助けてくれてありがとう!!! あなたの答えに本当に感謝します!

4

5 に答える 5

1

以下は、一部のブラウザーでは何もしません。

document.getElementById(name).hidden = true

に変更します

document.getElementById(name).style.display = 'block' // and 'none' for the matching line

それはあなたが必要とすることをしますか?


他の人が指摘しているように、ページも送信しています-別の要素を使用するか、関数を変更して start ます:

function showHide(e, name) {
     e.preventDefault();
     //do the toggle here
     return false;
 }
于 2013-04-06T20:14:14.987 に答える
0

何かを実行するボタンを表示するためだけにフォームを使用するべきではありません。代わりに、使用してみてください
<button onClick="showhide('specname');">Toggle</button>(フォームを完全に削除してください)。

于 2013-04-06T20:16:34.620 に答える
0

showhide() でこれを試してください。

function showhide(name){
    var elem = document.getElementById(name);
    (elem.style.visibility == 'hidden'?elem.style.visibility = 'visible':elem.style.visibility = 'hidden'); 
}

または同様に:

function showhide(name){
    var elem = document.getElementById(name);
    (elem.style.display== 'none'?elem.style.display= 'inline':elem.style.display= 'none'); 
}

両方を試して、どちらが必要かを確認してください。

乾杯。

于 2013-04-06T20:17:48.717 に答える
0

おそらく、ボタンをクリックするとフォームが送信され、ページが更新されるためでしょうか?

于 2013-04-06T20:14:10.003 に答える
0

問題は、サーバーに送信してページを更新する送信コントロールを使用していることです。サブミットを停止するか、コントロール タイプを変更します。次の両方が機能するはずです。2枚目をお勧めします。

これを試して

<FORM><input type="submit" value="Toggle" onclick="showhide('specname'); return false;"/>

またはこれ

<input type="button" value="Toggle" onclick="showhide('specname');"/>
于 2013-04-06T20:15:23.897 に答える