horachorus: Internet Explorer mag nicht!

Hallo liebe Gemeinde,

Da es die Entwickler des lieben IEs es nicht für nötig halten zu scheinen, endlich mal die Pseudoklasse :hover nicht nur für Links einzuführen, musste ich leider auf Javascript ausweichen. Folgende Funktion:

function onmouse() {  
  
 if (navigator.appName == "Microsoft Internet Explorer") {  
  
  var Zellen = new Array();  
  Zellen = document.getElementsByTagName("td");  
  
  
  for (var i = 0; i < Zellen.length; i++) {  
  
   if (Zellen[i].id != id) {v  /* id ist eine globlae Variable */  
  
    Zellen[i].onmouseover = function() { Zellen[i].style.background = "#EE5B5F"; };  
    Zellen[i].onmouseout = function() { Zellen[i].style.background = "transparent"; };  
  
   }  
  
  }  
  
 }  
  
}

Das super-hilfreiche Debug-Tool vom Internet Explorer (woraus ich einzelne Fehlermeldung leider nicht kopieren kann, ist bestimmt eine Copyright-Verletzung) zeigt jetzt an "'Zellen[...].style' is null or not an object". Wenn ich die for-Schleife aber auskommentiere, und für i eine Zahl einsetzte, funktioniert es schon. Warum geht das jetzt mit der Schleife nicht?? Ich hab schon alles ausprobiert!

Bitte helft mir, sonst krieg ich heute noch einen Anfall!!!!

lg horachorus

  1. if (navigator.appName == "Microsoft Internet Explorer") {

    Nimm lieber CC dann sehen andere Browser diesen Code nichtmal.

    Zellen[i].onmouseover = function() { Zellen[i].style.background = "#EE5B5F"; };
        Zellen[i].onmouseout = function() { Zellen[i].style.background = "transparent"; };

    }

    Wenn der Event ausgeführt wird hat i welchen Wert?
    Du musst hier this benutzen.

    Struppi.

    1. Hi Struppi!

      Wenn der Event ausgeführt wird hat i welchen Wert?
      Du musst hier this benutzen.

      Danke! Das wars, jetzt funktioniert es! Aber warum muss man "this" benutzen??

      Also nochmal danke lg horachorus

      1. Hi,

        Wenn der Event ausgeführt wird hat i welchen Wert?
        Du musst hier this benutzen.

        Danke! Das wars, jetzt funktioniert es! Aber warum muss man "this" benutzen??

        Wegen der Antwort auf die Frage, die Struppi gestellt hat :-)

        http://aktuell.de.selfhtml.org/artikel/javascript/organisation/

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Mahlzeit horachorus,

    if (navigator.appName == "Microsoft Internet Explorer") {

    So weit, so schlecht. Du verlässt Dich bei der Bestimmung, um welchen Browser es sich tatsächlich handelt, um irgendwelche beliebigen Angaben des Browsers (bzw. dessen Benutzers)? Du solltest sinnvollerweise eher auf Fähigkeiten des Browsers testen, um zu bestimmen, um welches Programm in welcher Version es sich handelt ... denn in fortgeschrittenen Versionen soll der IE auch :hover für andere Elemente als Links erkennen (können), munkelt man.

    Zellen[i].onmouseover = function() { Zellen[i].style.background = "#EE5B5F"; };
        Zellen[i].onmouseout = function() { Zellen[i].style.background = "transparent"; };

    Anstatt direkt die style-Eigenschaften der einzelnen Zellen zu manipulieren, wäre es erheblich sinnvoller, ihnen z.B. bei "onmouseover" eine Klasse namens "hover" zu verpassen, die Du bei "onmouseout" wieder entfernst. So hättest Du Struktur, Aussehen und Verhalten sauber voneinander getrennt und kannst bequem im zentralen bzw. jeweiligen Stylesheet das Aussehen für Tabellenzellen, über denen sich der Mauszeiger befindet, bestimmen. Insbesondere kannst Du so auch Tabellenzellen, die sich im Kopf, Fuß oder Body einer Tabellen befinden, unterschiedlich einfärben.

    BTW: Was ist eigentlich mit <th>? Willst Du denen kein "hover"-Verhalten beibringen?

    MfG,
    EKKi

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

    Da es die Entwickler des lieben IEs es nicht für nötig halten zu scheinen, endlich mal die Pseudoklasse :hover nicht nur für Links einzuführen,

    hm, den IE 7 und den IE 8 hast Du wohl verschlafen, gell? Dabei ist der Quirks-Mode ein verdammt unbequemes Bett, steh doch einfach mal auf und geh an die frische Luft. Aber Vorsicht, es droht Realität.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      hm, den IE 7 und den IE 8 hast Du wohl verschlafen, gell?

      Nein, nicht wirklich, ich hab es mit IE 7 und 8 ausprobiert, :hover funktioniert bei beiden nicht, bei Firefox oder anderen Browsern schon...

      lg

      1. Nein, nicht wirklich, ich hab es mit IE 7 und 8 ausprobiert, :hover funktioniert bei beiden nicht, bei Firefox oder anderen Browsern schon...

        Das glaub ich nicht (kann's grad nciht testen). Kann es sein, dass deine Siete im Quirksmode dargestellt wird?

        Struppi.

        1. Das glaub ich nicht (kann's grad nciht testen). Kann es sein, dass deine Siete im Quirksmode dargestellt wird?

          Hi Struppi!

          Ich weiß nicht, wo kann man sehen, ob der Quirks-Modus angestellt ist?

          lg horachorus

          1. Ich weiß nicht, wo kann man sehen, ob der Quirks-Modus angestellt ist?

            Das siehst du anhand des DOCTYPE den du benutzt.

            Struppi.

            1. Das siehst du anhand des DOCTYPE den du benutzt.

              Ich benutze HTML 4.01

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
              
              

              Das ist doch das neueste was Internet Explorer kann?!

              lg horachorus

              1. Hi,

                Ich weiß nicht, wo kann man sehen, ob der Quirks-Modus angestellt ist?
                Das siehst du anhand des DOCTYPE den du benutzt.

                Der ist zwar ein Faktor - aber nicht der allein entscheidende.
                Bspw. <?xml ...?> oder Whitespace vor der Doctype-Angabe triggern ebenfalls den Quirks Mode.

                javascript:alert(document.compatMode)
                in der Adresszeile eingetippt gibt bei einer Seite im Quirks Mode "BackCompat" aus, im Standard Compliant Mode "CSS1Compat".

                Ich benutze HTML 4.01

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

                
                >   
                > Das ist doch das neueste was Internet Explorer kann?!  
                  
                Es geht nicht um „neu” oder nicht.  
                Auch XHTML lässt sich im Standard Compliant Mode verarbeiten.  
                  
                MfG ChrisB  
                  
                
                -- 
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                
                1. Hi ChrisB,

                  javascript:alert(document.compatMode)

                  in der Adresszeile eingetippt gibt bei einer Seite im Quirks Mode "BackCompat" aus, im Standard Compliant Mode "CSS1Compat".

                  Bei mir wird ganz normal CSS1Compat ausgegeben....

                  Langsam regt mich das echt auf, ich darf nicht mal einen dezenten Hinweis auf die Website für IEUser machen, dass sie einen Browser benutzen, der viele Sicherheitslücken aufweist und sich nicht an gegebene Itnernetstandards hält...

                  Weißt du vielleicht noch eine Lösung?...

                  lg horachorus

                  1. Weißt du vielleicht noch eine Lösung?...

                    Wenn deine Seit im Standardmode ist, sollte :hover gehen im IE 7/8 auch für andere Elemente.

                    Struppi.