1

(asp.netコードビハインドからのhtml出力)houses/propertiesを表示するページがあります。私は次のjavascriptを作成しました。これは、ボタンを押すだけで、プロパティのすべてのcssクラスを変更して、htmlが変更されないようにしますが、cssクラスは変更して2列のビューを取得します。

これは正常に機能します。しかし、ユーザーが2列のビューを選択して次のページ(ページリストのようなもの)に移動すると、ビューは元のページ(1列から始まる)にリセットされると考えていました。

だから私は次のことをしました。ユーザーがボタンをクリックして、1列ビューから2列ビューに移動した場合、その値をwindow.nameに1または2として保存します。

その後、この小さなスクリプトをここに作成します。

 $(document).ready(setView());

 function setView() {
     if (window.name != null) {
         if (window.name == 2) {
             window.Show2Cols();
         }
         if (window.name == 1) {
             window.Show1Col();
         }

     }
 }

これは機能します。Show2Cols()メソッドは次のように始まります。

 function Show2Cols() {

 alert("Show2Cols is executed");
     var nodes = document.getElementById("panden").getElementsByTagName("div");
     alert("Just got all nodes.");
     for (i = 0; i < nodes.length; i++) 
     {....

そのため、ページを変更すると、「Show2Colsが実行されました」と表示されますが、「すべてのノードを取得した」とは表示されません。

これは私の初めてのJSであり、これ以上複雑になることはないので、問題がどこにあるのかを皆さんにお聞きしたいと思います。

私の推測では、on(document).ready()は機能しますが、ページにはまだ(視覚的に)何もないため、.getElementById()メソッドはまだ機能しません。

前もって感謝します。

4

1 に答える 1

5

問題はあなたの関数への参照です

$(document).ready(setView());

関数を実行し、その値をDOM対応イベントハンドラーとして返しています。必要なものは次のとおりです。

$(document).ready(setView);
于 2012-04-12T11:58:40.170 に答える