0

div を非表示にするために、ページの読み込み時に以下の javascript 関数 shoh() を実行しています。これは、html のハードコードされた div では問題なく動作しますが、php で作成された div では動作しないようです。PHP が div を作成する前に JavaScript が最初に実行され、それが非表示にならないのはなぜでしょうか? もしそうなら、作成後にこれらの div を非表示にする他の方法はありますか? JavaScriptが無効になっている場合、デフォルトで表示する必要がありますか?

onload で実行されるコード:

<script type="text/javascript">
function closeAllDivs() {
  shoh('g1');
  shoh('g2');
  shoh('g3');
  shoh('g4');
    }   
</script>
<BODY onLoad="closeAllDivs();">

divを非表示にするJavaScript:

function shoh(id) { 

if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById(id).style.display == "none"){
        document.getElementById(id).style.display = 'block';
        filter(("img"+id),'imgin');         
    } else {
        filter(("img"+id),'imgout');
        document.getElementById(id).style.display = 'none';         
    }   
} else { 
    if (document.layers) {  
        if (document.id.display == "none"){
            document.id.display = 'block';
            filter(("img"+id),'imgin');
        } else {
            filter(("img"+id),'imgout');    
            document.id.display = 'none';
        }
    } else {
        if (document.all.id.style.visibility == "none"){
            document.all.id.style.display = 'block';
        } else {
            filter(("img"+id),'imgout');
            document.all.id.style.display = 'none';
        }
    }
  }
}

div を作成する php コード:

for ($i=0; $i < count($this->items); $i++){
  <div style="display: block;" id="g<? echo $i ?>">
  ... code that displays items
  </div>
}
4

2 に答える 2

1

php が div を作成したのか、それともハードコードされているのかはそれほど重要ではありません。HTML がブラウザーに表示されるまでには、それはすでに同じことです。サーバーは PHP を処理します。サーバーを離れてブラウザーに向かうときには、PHP は存在しません。

window.onloadの代わりに使用することをお勧めします<body onload="">

window.onload = function() {
    closeAllDivs();
};
于 2013-04-02T20:45:10.340 に答える
0

Wolfman Joe に感謝します。問題の原因はおそらく物事の順序ではないことを知らせてくれました。これにより、shoh() 関数が失敗する可能性が高いため、実行が中断されることがわかりました...そのため、div を閉じるコードは実行されませんでした。解決策は、shoh() 関数にチェックを組み込み、div のプロパティを変更する前にその存在を確認することでした。結局のところ、すべての div $i が作成されたわけではありません。

function shoh(id) { 
  if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById(id)){
        if (document.getElementById(id).style.display == "none"){
            document.getElementById(id).style.display = 'block';
            filter(("img"+id),'imgin');         
        } else {
            filter(("img"+id),'imgout');
            document.getElementById(id).style.display = 'none';         
        }   
    }   
  }
}
于 2013-04-02T21:06:52.720 に答える