alkasser: indow.event.srcElement unter Mozilla

hallo leute

kann jemand mir bitte sagen, warum folgende Code nicht in Mozilla funkz?

  
function switchbgcolor(e) {  
	  
	if (window.event) { //IE only  
		target = window.event.srcElement;  
  
	}  
	else  {  
		  
		 target = e.target;  
		  
	}  
  
		  
		  
		  
		if (target.style.backgroundColor == "#ff0000") {  
			target.style.backgroundColor = "#FFFFFF";  
		}  
		else {  
			target.style.backgroundColor = "#FF0000";  
		}  
	}

es funkz in IE ohne Problem, aber in den anderen Browsern gar nicht:-((

Danke vorab

alkasser

  1. Hallo alkasser,

    kann jemand mir bitte sagen, warum folgende Code nicht in Mozilla funkz?

    function switchbgcolor(e) {

    if (window.event) { //IE only

      
    Weil <http://de.selfhtml.org/javascript/objekte/event.htm@title=event> neben dem IE auch alle anderen Browser kennen. Folglich sollte Dein else-Zweig nie erreicht werden. Du willst vermutlich prüfen, ob e vorhanden bzw. nicht vorhanden ist:  
      
    `if (!e) e = window.event;`{:.language-javascript}  
      
    Nun musst Du als nächstes unterscheiden, ob die Eigenschaft srcElement oder target unterstützt wird:  
      
    ~~~javascript
    if (e.srcElement) {  
      //srcElement ist bekannt  
    }else if (e.target) {  
      // target ist bekannt  
    } else {  
      // Nichts von beiden...  
    }  
      
    
    

    Mit freundlichem Gruß
    Micha

    --
    simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
    1. Hallo Micha,

      ich danke dir deine schnelle Antwort. ich habe folgendes getestet:

        
      function switchbgcolor(e) {  
      var targ;  
                     if (!e) e = window.event;  
                 if (e.srcElement)  {  
      		   alert('IE');  
                      targ = e.srcElement;  
              }  
              else if (e.target) {  
                      alert('Mozilla');  
                       targ = e.target;  
                      }  
      				else {alert('was anders');}  
        
        
        
        
                      if (targ.style.backgroundColor == "#ff0000") {  
                              targ.style.backgroundColor = "#FFFFFF";  
                      }  
                      else {  
                              targ.style.backgroundColor = "#FF0000";  
                      }  
              }  
      
      

      Nun im IE kriege  ich beim Onklick erst 'IE' und mein Ziel gefärbt(wie gewünscht) im Mozilla sollte ich normalerweise wenn e.target erkannt ist 'Mozilla' und das Ziel auch gefärbt. Aber in Mozilla passiert gar nicht weder der Hinweis noch das Ziel bekomme ich raus.

      kannst du mir vielleicht weiter hilfen?

      Beste Grüße
      alkasser

      1. Hallo alkasser,

        kannst du mir vielleicht weiter hilfen?

        Wie rufst Du die Funktion auf?

        Ich habe es mal fix probiert mit einem p-Tag:

        document.getElementsByTagName('p')[0].onclick = function(e) { switchbgcolor(e); };

        und mein FF gab mir Mozilla zurück. Übrigens, der Mozilla setzt die Farben nach dem Schema rgb(r, g, b) und nicht in Hexadezimaldarstellung. Hier solltest Du besser zwei CSS-Klassen verwenden und diese tauschen. className sollte Dir da weiterhelfen.

        Mit freundlichem Gruß
        Micha

        --
        simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
  2. Mahlzeit alkasser,

    kann jemand mir bitte sagen, warum folgende Code nicht in Mozilla funkz?

    Natürlich. Sobald DU uns mitteilst, was genau "nicht funzt" ...

    es funkz in IE ohne Problem, aber in den anderen Browsern gar nicht:-((

    Und wie äußert sich dieses "gar nicht"? Fehlermeldungen? Verhalten?

    Keine Arme - keine Kekse.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi,

      if (target.style.backgroundColor == "#ff0000") {  
    

    Du hast natürlich durch eine Kontrollausgabe verifiziert, dass dir hier bei der Abfrage der Eigenschaft auch der Wert zurückgegeben wird, den du erwartest?

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.