2016-05-16 4 views
1

dies ist meine Funktion changeSelectedBarStyle:Uncaught TypeError: topFrame.window.changeSelectedBarStyle ist keine Funktion, warum?

function changeSelectedBarStyle(tdId){ 
    $("#menuTable td").each(function(index){ 
     if(this.id == tdId){ 
      $(this).removeClass("menuPanel"); 
      $(this).addClass("menuPanelSelected"); 
     }else{ 
      $(this).removeClass("menuPanelSelected"); 
      $(this).addClass("menuPanel"); 
     } 
    }); 
} 

das ist, was ich von der Konsole erhalten: Uncaught Typeerror: topFrame.window.changeSelectedBarStyle keine Funktion

ist und es stellt sich eine leere Seite. aber dieser Fehler wird nur beim ersten Mal angezeigt. Wenn die Seite aktualisiert wird, ist alles in Ordnung.

---------------- bearbeiten für weitere Informationen ---------------------

diese die Funktion ist, wo es nennt, und ich einige Protokolle hinzufügen (zeigt, wenn die Seite Last korrekt nicht leere Seite dieses Mal):

function changeTopFrameBarStyle(pageType){ 
     topFrame.window.changeSelectedBarStyle(pageType); 
     console.log(pageType);//job(it is correct) 
     console.log(topFrame.window.changeSelectedBarStyle);//changeSelectedBarStyle(tdId) 
     console.log(topFrame.window.changeSelectedBarStyle(pageType));//undefined 
     console.log(topFrame.window);//Window webSiteTopMenu.jsp(this page is the function changeSelectedBarStyle exists) 
    } 

und dies ist die Seite, die die folgenden nennen:

$(document).ready(function() { 
    window.parent.changeTopFrameBarStyle("job");  

}

es ist die Sache mit: $ (document) .ready (function()

denn bevor dies geschieht, es wird dies mit:

window.onload= function(){ 
    window.parent.changeTopFrameBarStyle("people"); 
}; 
+1

Wo ist der Code, der diese Funktion aufruft? Und welchen Umfang ist es in – jwatts1980

+0

Ich füge einige Inhalte zu dieser Frage zu reichen den Grund – daxue

Antwort

2

Es ist wahrscheinlich, dass topFrame.window.changeSelectedBarStyleundefined ist. console.log(...) es zu überprüfen.

Möglicherweise ist der Inhalt des Frames noch nicht geladen. Greifen Sie über das Ereignis topFrame auf das Ereignis window.onload zu, wodurch sichergestellt wird, dass das DOM, alle Bilder, Skripts und Frames geladen sind.

Beachten Sie, dass jQuerys ready -Ereignis ausgelöst wird, nachdem nur das DOM geladen wurde, und so der Rahmeninhalt zu der Zeit nicht geladen worden sein wird.

Wenn Sie versuchen, die window Objekt eines iframe Sie stattdessen für die contentWindow Eigenschaft suchen konnten zuzugreifen.

+0

Ich füge einige Inhalte zu dieser Frage zu reichen den Grund, bitte helfen Sie mir .. – daxue

+0

Können Sie erklären, was 'topFrame' bezieht sich auf? Wie wird es definiert und festgelegt? –

+0

ist es das obere Menü. Wie ein Navigationsbanner auf der Oberseite der Seite. Ich bin nicht ein Frontendcoder. Ich versuche, etwas Code in der Seite zu redigieren, nicht wirklich js .. – daxue

Verwandte Themen