1

2 つの div の表示と非表示に問題があります。「投稿を書く」と「メッセージを送信」の 2 つのリンクがあります。何らかの理由で、いずれかの div を表示するには、リンクを 2 回クリックする必要があります。ページが読み込まれる前にクリックしようとしたのではないかと思いましたが、問題は解決しませんでした。ページの読み込み時に div が設定されdisplay:none、JS を使用してスタイル プロパティを変更します。ここで問題を表示できます

ここに私のJavaScriptコードがあります:

    <script type="text/javascript" />
    function showPost(id) {
if(document.getElementById('post').style.display == 'block' && id == 'send') {
    document.getElementById('post').style.display = 'none';
    document.getElementById(id).style.display = 'block';
}
else if(document.getElementById('send').style.display == 'block' && id == 'post') {
    document.getElementById('send').style.display = 'none';
    document.getElementById(id).style.display = 'block';
}
else if(document.getElementById(id).style.display == 'none') {
    document.getElementById(id).style.display = 'block';
}
else {
    document.getElementById(id).style.display = 'none';
}
    }
    </script>

ありがとう!

4

4 に答える 4

2

postand要素にはsend、ロード時にstyle属性がないようです。cssだけに含めるのは役に立ちませんdisplay:none。要素自体に適用する必要があります。

両方の要素に追加style="display:none;"すると、問題が解決します。

<div id="post" style="display: none;">
<div id="send" style="display: none;">
于 2012-08-09T13:33:04.417 に答える
0

CSS を使用しているので、 element.style.display が要素に関連付けられたスタイルを見つけているとは思いません。したがって、最初のクリックで関数のデフォルトがelse条件になり、クリックされた要素の表示スタイルが「なし」に設定されると思います。これは、2 回目のクリックで最初の条件の 1 つが満たされ、関数が正しく動作することを意味します。スタイルをインラインで使用してみてください:)

于 2012-08-09T13:34:38.853 に答える
0

style.css から「display: none」を削除

#post, #send {
width: 166.5%;
height: 195px;
border: 3px solid #DDD;
background: #E7EBF2;
margin-left: -67%;
margin-top: -107px;
/*display: none;*/
}

そして、あなたのHTML style="display:none"でdivの追加(投稿と送信)

<div id="post"><div id="post" style="display:none">

<div id="send"><div id="send" style="display:none">

于 2012-08-09T13:34:53.887 に答える
0

document.getElementById('post').style.display / document.getElementById('send').style.display が空の文字列を返すため、else 条件が初めて実行されます。

于 2012-08-09T13:36:23.870 に答える