2012-04-12 15 views
1

私は、(asp.netコードの背後にあるhtml出力の)住宅/プロパティを示すページを持っています。 ボタンを押すとプロパティのすべてのcssクラスが変更されるので、htmlは変更されませんが、cssクラスは2列ビューを取得するように、以下のjavascriptを構築しました。JavaScriptメソッドが(ドキュメント)から呼び出されたときに完全に実行されない.ready

これは問題なく動作します。しかし、ユーザーが2列ビューを選択して次のページに移動すると(ページングされたリストのようなもの)、ビューは元の列に戻ります(1列目を開始します)。

私は以下のことを行っています。ユーザーがボタンをクリックし、2 columnviewに、1 columnviewから行く場合、私は1としてwindow.nameにその値を保存したり、その後2

は、私はここで、この小さなスクリプトを釜:

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

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

    } 
} 

これを働く私は、ページを変更したとき

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が実行される」というのをポップアップが、それは「ただ、すべてのノードを得ました」と言っていません:メソッドShow2Cols()は次のように始まります。

これは私の初めてのJSで、もっと複雑になることはないので、問題がどこにあるのか聞かせてください。

(document).ready()は動作しますが、.getElementById()メソッドはまだ動作しません。ページには何も表示されていません(視覚的に)。

ありがとうございます。

+2

を必要とするものです純粋なjavascritpを使ったjQuery - すべての方法でjQueryを使用します。 – scibuff

+7

'$(document).ready(setView());';これは即座に 'setView'を実行します(括弧は呼び出しを行います)。DOMがロードされたときに関数を実行したい場合、' $(document).ready(setView); ' –

答えて

5

問題は、あなたがここに、関数を実行し、DOM readyイベントハンドラとして、その値を返すされているあなたの機能をご参照

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

では、あなたが結合なぜあなたは

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

編集に同意できない経験の浅いjQueryユーザーにとってはコードが何をするのかが少しはっきりしていますが、コードの最適化を促進するものではありません。ほとんどの経験豊富な開発者が$(関数)アプローチを使用する場合、$(document).ready()をよく見ています。 – GillesC

関連する問題