Warum ist meine javascript-Funktion manchmal nicht funktioniert

Ich habe eine große javascript-Funktion init (), verbirgt und zeigt eine große Anzahl von div ' s. Wenn die Seite geladen wird, wird der javascript-Funktion, die ausgelöst wird durch das Skript unten.

<script type="text/javascript">
$(document).ready(function() {
init();
});
</script>

Meisten der Zeit, die das javascript wird ausgelöst durch das script unten. Jedoch einmal in eine Weile das Skript init() scheint nicht ausgelöst zu werden. Etwa 1 von 20 mal die Funktion init() scheint nicht ausgelöst zu werden. Alle anderen 19 mal die Seite und das javascript funktioniert Prima ohne Fehler. Die Umstände, unter denen dieser Fehler Auftritt zu sein scheinen, nicht anders als normal, wie dieser Fehler tritt beim Drücken von F5 20-mal.

Ich habe das init() scheint nicht genannt zu werden, weil die erste Anweisung (alert("Funktion aufgerufen");) in init() wurde nicht aufgerufen. In den Fällen, dass die javascript-funktioniert wurde, bekam ich die Warnmeldung und die Seite wurde geladen gut ohne Fehler.

Ich versucht, verschiedene Möglichkeiten für das auslösen der javascript wie Fenster.onload aus, und setzen am Ende der Seite dieses script:

<script type="text/javascript">init();</script>

Alle diese verschiedenen Methoden auslösen init() scheint nicht zu keinen Unterschied machen.

Dies ist die init () - Funktion:

function init(){
pauzereload__gl_var=1;
load2__gl_var=0;

//Hide bus options:
var boxbusnotshow = document.getElementById("boxDiv").getElementsByTagName("a");
boxbusnotshow[3].style.display="none";
boxbusnotshow[4].style.display="none";
boxbusnotshow[5].style.display="none";

document.getElementById("loadingdiv").style.display = "none";
document.getElementById("loadingdivdate").style.display = "none";
getvariables(); //Get variables generated by the php script, to get activetab

var a=1; b=1;
highlightboxinitiate(a,activetab__gl_var,load2__gl_var);
highlightlistinitiate(a,b);

pauzereload__gl_var=0;
}

Dies ist die highlightboxinitiate Funktion, die aufgerufen wird, von der init () - Funktion:

function highlightboxinitiate(divnr,linenr,load2__gl_var) {

getvariables();

for (i = 1; i < 8; i++) {document.getElementById("nextnr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>(9 + settab__gl_var[linenr]) && load2__gl_var==0){
document.getElementById("nextnr" + linenr).style.display = "block";}

for (i = 1; i < 8; i++) {document.getElementById("prevnr" + i).style.display = "none";}
if(settab__gl_var[linenr] >2 && load2__gl_var==0){
document.getElementById("prevnr" + linenr).style.display = "block";}

for (i = 1; i < 8; i++) {document.getElementById("pagenr" + i).style.display = "none";}
if(load2__gl_var==0 && counttab__gl_var[linenr]>9){
document.getElementById("pagenr" + linenr).style.display = "block";}


if(load2__gl_var==1){
for (i = 1; i < 8; i++) {document.getElementById("renextnr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>(9 + settab__gl_var[linenr])){
document.getElementById("renextnr" + linenr).style.display = "block";}

for (i = 1; i < 8; i++) {document.getElementById("reprevnr" + i).style.display = "none";}
if(settab__gl_var[linenr] > 2){
document.getElementById("reprevnr" + linenr).style.display = "block";}

for (i = 1; i < 8; i++) {document.getElementById("repagenr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>9){
document.getElementById("repagenr" + linenr).style.display = "block";}
}

var box = document.getElementById("boxDiv").getElementsByTagName("a");
current_tab__gl_var=linenr;
   for (i = 0; i < box.length; i++) {unselectboxinitiate(divnr,i);}

tabselnr = linenr-1;
if (tabselnr<=2){box[tabselnr].className="selected1";}
if (tabselnr>2 && tabselnr<=5){box[tabselnr].className="selected2";}
if (tabselnr==6){box[tabselnr].className="selected3";}


    for (j = 1; j < 10; j++) {
    for (i = 1; i < 8; i++) {
    document.getElementById("list"+j+"n"+i).style.display = "none";
    document.getElementById("it"+j+"n"+i).style.display = "none";}
    document.getElementById("list"+j+"n"+linenr).style.display = "block";
    document.getElementById("it"+1+"n"+linenr).style.display = "block";}

}

Dies ist die highlightlistinitiate Funktion, die aufgerufen wird, von der init () - Funktion:

function highlightlistinitiate(divnr,linenr) {
   var box = document.getElementById("listmenu").getElementsByTagName("a");
current_list__gl_var=linenr;
   for (i = 0; i < box.length; i++) {
    box[i].className="unselected";}
    box[linenr-1].className="selected";
        for (j = 1; j < 10; j++) {
    for (i = 1; i < 8; i++) {
    document.getElementById("it"+j+"n"+i).style.display = "none";}}
    document.getElementById("it"+current_list__gl_var+"n"+current_tab__gl_var).style.display = "block";
    }

Dies ist die getvariables Funktion, die aufgerufen wird, von der highlightboxinitiate Funktion:

function getvariables(){
counttab__gl_var = new Array (7);
settab__gl_var = new Array (7);
counttab__gl_var [1] = 83; settab__gl_var [1] = 0; activetab__gl_var = 2; counttab__gl_var [2] = 111; settab__gl_var [2] = 0; activetab__gl_var = 2; counttab__gl_var [3] = 137; settab__gl_var [3] = 0; activetab__gl_var = 2; counttab__gl_var [4] = 1; settab__gl_var [4] = 0; activetab__gl_var = 2; counttab__gl_var [5] = 1; settab__gl_var [5] = 0; activetab__gl_var = 2; counttab__gl_var [6] = 1; settab__gl_var [6] = 0; activetab__gl_var = 2; counttab__gl_var [7] = 1; settab__gl_var [7] = 0; activetab__gl_var = 2; }

Habe ich den Eindruck, dass die Funktionen ok sind, weil wenn die Seite nicht ordnungsgemäß eingeleitet mit der ersten Anweisung in der init () - Funktion nicht ausgeführt wurde.

Ich habe das crossbrowser keinen Einfluss auf dieses problem. Dieses problem tritt in allen Browsern.

Wenn der Fehler Auftritt, sehe ich keine Fehlermeldungen in der firebug-Konsole.

Ich habe lange gesucht und debugging eine Menge, so dass jede Hilfe wird sehr willkommen und geschätzt!

  • Huch. Ich bin froh, ich bin nicht aufrechtzuerhalten, dass.
  • Um klar zu sein (ich bin sicher, Sie haben diese überprüft, aber ich sehe es nicht in deiner Frage): Wenn der init-Funktion nicht ausgeführt wird, sehen Sie alle Fehler in Ihrem browser für die Konsole?
  • Nein, ich sehe keine Fehler
InformationsquelleAutor BastiaanWW | 2012-04-08
Schreibe einen Kommentar