-1

index.phpに、メニューを表示してページのコンテンツを非表示にするボタンがあります。ただし、2つの異なるテンプレートで機能すると想定されています。私の関数は基本的に次のようになります:

function show_menu();
{
document.getElementById('menu').style.display="block";
document.getElementById('content1').style.display="none";
document.getElementById('content2').style.display="none";
}

コンテンツの1つだけを配置すると、非表示になります。しかし、両方のコンテンツを入れても、そうではありません。どうしたの?それは不可能ですか、それとも私は何か間違ったことをしていますか?

4

3 に答える 3

3

問題が正しく解決されたかどうかはわかりませんが、問題が解決した場合、問題は、ページに存在しない要素のスタイルを設定できないことです。null値を確認する必要があります。

function show_menu()
{
document.getElementById('menu').style.display="block";

var content1 = document.getElementById('content1'),
    content2 = document.getElementById('content2');

if (content1) {
    content1.style.display="none";
}
if (content2) {
    content2.style.display="none";
}
}
于 2012-07-03T11:54:59.743 に答える
2
function show_menu() //Removed the semicolon, could be the culprit causing the problem
{
  document.getElementById('menu').style.display="block";
  document.getElementById('content1').style.display="none";
  document.getElementById('content2').style.display="none";
}
于 2012-07-03T11:53:16.503 に答える
1

content1テンプレートの 1 つに id を持つ要素がないと思います。次に、存在しない要素のプロパティにアクセスすると、コードが失敗しstyle、スクリプトの実行が停止し、content2.

考えられる解決策は次の 3 つです。

  • すべてのテンプレートで同じ ID を使用してください。両方にcontent同じ機能目的の が含まれている場合は、同じ名前にする必要があります。スクリプトは、これらすべてのテンプレートで機能します。
  • 別のスクリプトを使用するか、使用するテンプレートを示す変数を使用して、スクリプトが正しい ID を判断できるようにします。
  • 要素の存在を動的に確認します (常に行う必要があります)。
function show_menu() {
    var menu = document.getElementById('menu'),
        content1 = document.getElementById('content1'),
        content2 = document.getElementById('content2');

    if (menu)
        menu.style.display="block";
    if (content1)
        content1.style.display="none";
    if (content2)
        content2.style.display="none";
}
于 2012-07-03T12:03:18.017 に答える