Markus: "out of memory at line..." (nur mit IE)

hallo,

ich versuche mich gerade an meinem ersten javascript...
es soll folgendes machen:
ich habe eine 3x3 zellen große tabelle mit 5 Techniken und 4 Produkten die miteinander kombiniert werden können. wenn man eine der techniken anklickt wird man dazu aufgefordert noch ein produkt zu wählen und umgekert.
die freude war dementsprechend groß, als es im firefox nach relativ kurzer zeit klappte... doch sie währte nicht lange, da der IE mir einen
"out of memory at line: 75", wenn ich noch eine technik anklicke, nachdem ich schon einmal produkt und technik kombiniert habe und "out of memory at line:  107 wenn ich noch ein produkt anklicke bringt :/

anzusehen ist meine seite hier:
http://www.corscience.de/testing/table.html

vielen dank schonmal,
markus

  1. Hallo Markus
    hab mir das javascript jetzt mal angeschaut und die Seite bei mir lokal nachgebaut (den Fehler im IE konnte ich bestätigen - sonst hätte ich garnicht angefangen ;-) )
    Also: es sieht so aus, als ob die Verwendung der (globalen?) Variablen selected_p und selected_t das Problem ist. Diese beiden Variablen sind jawohl, wenn ich SELFHTML richtig interpretiere global. (Zitat: "Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global."). Vielleicht mag es der IE nicht, wenn man globale Variablen innerhalb einer Funktion mit delete löscht?
    Wie auch immer: ich hab das Problem noch nicht richtig durchdrungen, kann dir aber trotzdem eine Lösung vorschlagen:
    Ich hab jetzt mal folgende Änderungen an deinem Skript vorgenommen:

      
    //zwei globale Variablen fuer gewaehlte produkte und gewaehlte Techniken  
    var selected_t=0;  
    var selected_p=0;  
    
    

    am Beginn des Skriptes eingefuegt

      
    if(undefined === window.selected_p){  
    
    

    ersetzt durch

      
    if(selected_p==0){  
    
    
      
    if(undefined === window.selected_t){  
    
    

    ersetzt durch

      
    if(selected_t==0){  
    
    
      
    delete selected_t;  
    delete selected_p;  
    
    

    ersetzt durch

      
    selected_t=0;  
    selected_p=0;  
    
    

    Dann funktioniert es auch im IE. Ob die Verwendung von globalen Variablen natürlich schön ist, ist eine andere Sache.

    liebe Grüße mbr