setAtrribute

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • setAtrribute

    Hi, ich schon wieder...
    JS würde ja echt Spaß machen wenn der IE nicht wäre...

    Aufbauenend auf meine letzte Frage:
    ich will auf die Element Eigenschaften nicht direkt zugreifen, sondern einem Element eine andere Klasse zuordnen.

    Browser machen das auch einwandfrei, IE macht gar nix (nichtmal ne Fehlermeldung):

    PHP-Code:
    function switchIt(obj){
        try{
    // Browser
           
    obj.setAttribute("class""current");
        }catch(
    e){// IE
           
    obj obj.srcElement;
           
    obj.setAttribute("class""current");
        }
      } 
    Hat einer ne Idee oder ne Alternative?
    *seufz*

    P.S.:
    Habe direkt was gefunden:
    IE will obj.setAttribute("className", "current");
    haben, klappt aber nur wenn ich aus dem Tag mit onclick="switchIt(this)" drauf zugreife - genau das was ich verhindern wollte......
    Zuletzt geändert von mcmurphy; 19.02.2009, 13:36.
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    guckst du hier. punkt 4

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      THX Peter,
      jetzt brauche ich nur noch eine andere Weiche für den IE (weil er obj.setAttribute("class", "current"); ja kennt aber nicht macht....
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Kommentar


      • #4
        hast du das überhaupt gelesen? die lösung mit createAttribute?

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          ja, habe ich, funktioniert ja auch

          habe nur beim einhängen per addEvent das (lösbare) Problem das FF:
          links[i].addEventListener('click', function(evt) { switchIt(this); }, false);

          IE:
          links[i].attachEvent('onclick', function(evt){ switchIt(evt); });

          haben will
          Das klemmt dann natürlich mit FF
          function switchIt(obj){

          obj = obj.srcElement;
          einfaerb = document.createAttribute ('class');
          einfaerb.nodeValue = 'current'
          obj.setAttributeNode(einfaerb);
          }

          ergo noch ne Weiche ala
          if(ie){
          obj = obj.srcElement;
          }
          einfaerb = document.createAttribute ('class');
          einfaerb.nodeValue = 'current'
          obj.setAttributeNode(einfaerb);

          THX Peter
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Kommentar


          • #6
            so,
            hier jetzt meine Lösung (getestet FF3, IE 7, Opera & Safari):

            PHP-Code:
              window.onload = function(){
                  try{
                     var 
            basisNode document.getElementById("navi");               
                     var 
            links basisNode.getElementsByTagName("a");
                     var 
            currentLink null;
                    for (var 
            i=0i<links.lengthi++){ 
                          if(
            links[i].addEventListener){// echte Browser
                                
            links[i].addEventListener('click', function(evt) {  switchIt(this);  }, false); 
                             }else if(
            links[i].attachEvent) {
                                      
            links[i].attachEvent('onclick', function(evt){ switchIt(evt); });
                             }
                     }
                   }catch(
            e){alert(e);}
               }
              function 
            switchIt(obj){
                  try{
                    if(
            obj.srcElement){
                       
            obj obj.srcElement;
                    }
                    var 
            changeClass document.createAttribute ('class');
                    
            changeClass.nodeValue 'current'
                    
            obj.setAttributeNode(changeClass);
                  }catch(
            e){ alert(e);}  
              } 
            "I don't want to belong to any club that would accept me as a member."

            Groucho Marx

            Kommentar


            • #7
              setAttribute, createAttribute und den ganzen Krempel sollte man einfach nicht benutzen - macht immer wieder Probleme.

              objekt.attributname = xyz; bzw
              objekt["attributname"] = xyz;
              funktionieren so gut wie immer genauso.

              Nur weil class ein reserviertes Wort in JavaScript ist, kann man das nicht nehmen - aber alle Browser unterstuetzen den Zugriff auf das class-Attribut eines Elements ueber elementReferenz.className.
              Zuletzt geändert von wahsaga; 24.02.2009, 16:05.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X