Andy H.: removeAttribute+styleFloat

Hallo,

ich würde gerne mit "removeAttribute" das float Attribut entfernen, hab allerdings nach Suche im Internet keine passende Lösung gefunden.

Das Problem ist, dass float ja ein reserviertes Wort in Javascript ist und da ich den IE nutze gezwungen bin "styleFloat" zu nutzen.

Die beiden Versuche:

document.getElementById("Card"+IDcounter).style.removeAttribute("styleFloat","false");

document.getElementById("Card"+IDcounter).style.removeAttribute("float","false");

funktionieren beide nicht.

Vielleicht hab ich auch nicht gründlich genug gesucht, wäre aber für eine passende Antwort hier sehr dankbar.

Lg Andy

  1. Hi,
    und wenn du es gleich null setzt?
    probiers mal so hier:
    document.getElementById("Card"+IDcounter).style.removeAttribute("styleFloat","false")=null;

    --
    Selfcode: ie:{ fl:( br:> va:| ls:& fo:| rl:? n4:& ss:| de:/ js:} mo:) zu:}
    1. Ne da gibt das folgenden Syntax Error:

      "Wrong number of arguments or invalid property assignment"

      Habs auch schon mit Null setzen in sämtlichen Varianten versucht, bisher Erfolglos... :-/

  2. Hallo,

    Unter JavaScript heißt diese Eigenschaft 'cssFloat'. Wie es mit der Unterstützung von style.removeAttribute() aussieht, weiß ich nicht, aber warum setzt du cssFloat nicht einfach auf 'none'?

    Gruß

    1. Dass diese Eigenschaft unter Javascript "cssFloat" heißt ist nur bedingt richtig. Bei Mozilla und eventuell auch anderen Browsern ist das glaub ich so, allerdings heißt es unter dem IE "styleFloat".

      style.removeAttribute() ist unterstützt. ( Habs mit witdh z.B. getestet, klappt einwandfrei )

      Nur da float wie gesagt ein reserviertes Wort ist, ist das hier ein kleiner Sonderfall. Habs mit

      style.removeAttribute("styleFloat...")
      style.removeAttribute("float...")
      style.removeAttribute("cssFloat...")

      versucht, nur leider ohne Erfolg.

      cssFloat/styleFloat hab ich bereits auf "none" gesetzt, hat leider auch nicht geklappt.

      Gruß Andy

      1. Hallo,

        Dass diese Eigenschaft unter Javascript "cssFloat" heißt ist nur bedingt richtig. Bei Mozilla und eventuell auch anderen Browsern ist das glaub ich so, allerdings heißt es unter dem IE "styleFloat".

        Tja, der IE *böse mit dem Rohrstock wedel* ;-)

        style.removeAttribute() ist unterstützt. ( Habs mit witdh z.B. getestet, klappt einwandfrei )

        Mag sein, es zu benutzen macht trotzdem keinen Sinn, du kannst z. B. einem Baum schlecht die Eigenschaft "Höhe" wegnehmen, sondern höchstens die Säge schwingen und die Höhe ändern.

        style.removeAttribute("styleFloat...")
        style.removeAttribute("float...")
        style.removeAttribute("cssFloat...")

        versucht, nur leider ohne Erfolg.

        Ich hoffe mal nicht, dass du die Punkte ... auch wirklich in dein JavaScript geschrieben hast.

        cssFloat/styleFloat hab ich bereits auf "none" gesetzt, hat leider auch nicht geklappt.

        Kannst du mal den JavaScript-Code und das dazugehörige HTML-Dokument posten? Benutzt du irgendwo im nicht per JavaScript veränderten, sprich eingebundenen CSS !important?

        Gruß

  3. ich würde gerne mit "removeAttribute" das float Attribut entfernen, hab allerdings nach Suche im Internet keine passende Lösung gefunden.

    Du kannst kein style Attribut entfernen. Aber was hindert dich daran die Eigenschaft auf den defaultwert zu setzen?

    Struppi.

    1. Doch, man kann mit style.removeAttribute(...) auch style Attribute entfernen, habs getestet.

      styleFloat auf null zu setzen etc, hab ich alles versucht. Klappt leider nit :-/

      Gruß

      1. Doch, man kann mit style.removeAttribute(...) auch style Attribute entfernen, habs getestet.

        Dann hast du falsch getestet.

        styleFloat auf null zu setzen etc, hab ich alles versucht. Klappt leider nit :-/

        null ist auch kein gültiger wert für float.

        Struppi.

        1. http://userpage.fu-berlin.de/selfhtml/javascript/objekte/style.htm#remove_attribute

          Da hab ichs her, wenn da irgendwas fehlerhaftes dran ist etc, sag es mir bitte :-)

          Gruß

          1. Hi,

            Da hab ichs her, wenn da irgendwas fehlerhaftes dran ist etc, sag es mir bitte :-)

            Proprietäres IE-Gesocks, was sonst keinen Schwan^W Browser interessiert (na ja, fast keinen).

            Gruß, Cybaer

            --
            Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
            (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
            1. Nun gut, dann schau ich mir mal an wie man das richtig macht. Du hattest ja einen Link gepostet. Hoffentlich werde ich da was brauchbares finden.

              Danke schonmal für die ganzen Ratschläge!

              Gruß, Andy

              1. Nun gut, dann schau ich mir mal an wie man das richtig macht. Du hattest ja einen Link gepostet. Hoffentlich werde ich da was brauchbares finden.

                Du brauchst noch nicht mal den Link folgen, er hat dir auch die Lösung geziegt.

                Struppi.

                1. Ja, aber ich möchte auch genau verstehen was ich tue und wie es funktioniert.

                  Bin noch Anfänger in Javascript und im Moment auch nicht unter direktem Zeitdruck. Die Zeit möchte ich mir nehmen :-)

                  Mit einfachem reinkopieren hat übrigens auch nicht geklappt, daher schau ich erst recht mal auf der Seite nach :-)

                  Nochmals danke für alle Ratschläge und Kommentare.

                  gruß, Andy

                  1. Ja, aber ich möchte auch genau verstehen was ich tue und wie es funktioniert.

                    Daher hab ich dir auch schon ein paar Schnipsel gezeigt, wo du erkennst das nichts entfernt wird.

                    Mit einfachem reinkopieren hat übrigens auch nicht geklappt, daher schau ich erst recht mal auf der Seite nach :-)

                    Der Code den Cybaer dir gezeigt hat, macht nichts weiter, als das eine Eiegnschaft des style-objektes gesetzt wird. Das geht mit jeder beliebigen Eigenschaft und jedem Objekt.

                    objekt[eigenschaft] = wert;

                    Der einzige trick hier ist diese Zeile:

                    var floatAttributeName=(typeof(window.cssFloat)=="undefined")?"styleFloat":"cssFloat";  
                    
                    

                    Hier prüft er ob es eine Eigenschaft gibt, die cssFloat heißt, wenn es diese nicht gibt enthält floatAttributeName den String "styleFloat", wenn schon dann "cssFloat"

                    und was danach kommt, ist das was ich dir oben gezeigt habe.

                    Struppi.

                    1. Hi,

                      Mit einfachem reinkopieren hat übrigens auch nicht geklappt, daher schau ich erst recht mal auf der Seite nach :-)

                      Der Code den Cybaer dir gezeigt hat, macht nichts weiter, als das eine Eiegnschaft des style-objektes gesetzt wird. Das geht mit jeder beliebigen Eigenschaft und jedem Objekt.

                      Ja, aber: Man kann im Stylesheet gesetzte Eigenschaften mit style überschreiben, aber nicht löschen (löschen, d.h., den Default-Wert wieder herstellen, kann man nur, wen man den Stil auch via style gesetzt hat). Wenn das mit dem Löschen also nicht geklappt hat, dann vermute ich mal, daß Andy H. float im Stylesheet setzt.*) Und dann muß man es auch im Stylesheet löschen oder mit obj.style[floatAttributeName]="none" explizit überschreiben ...

                      *) @Andy H.: Es wäre sinnvoll gewesen zu posten, daß float via Stylesheet gesetzt wurde.

                      Gruß, Cybaer

                      --
                      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
                      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
                      1. Jap, das stimmt, sorry ;-)

                        Wusste nicht, dass es eine Rolle gespielt hat, aber hab ja den Anfängerbonus. :-P

                        Soo aber jetzt erstmal Feierabend, ich werde das heute Abend dann mal anpacken. Danke euch beiden !

                        Gruß

                        Andy

              2. Hi,

                Nun gut, dann schau ich mir mal an wie man das richtig macht. Du hattest ja einen Link gepostet. Hoffentlich werde ich da was brauchbares finden.

                Wie Struppi sagt: Ich habe es dort schon gepostet.

                Vorgehensweise (wenn ich es nicht gewußt hätte ;-)):

                1. Googeln nach: float mit JavaScript ändern
                2. IMHO erster wirklich weiterführender Treffer ist wohl der genannte Link (mom. bei der Suche an 7. Stelle - Sublinks nicht mitgezählt). Die unterschiedliche float-Syntax wird schon in der Trefferanzeige ausschnittsweise gezeigt.
                  3a) Keine weitere Beschäftigung mit der Materie: Funktion herunterladen, Lizenzbedingung beachten oder nur aus dem Quelltext lernen, Original-"float" in ein Stylesheet setzen (sofern noch nicht geschehen - ist aber eh sinnvoller), und dann dort mittels der Funktion cssRule() bei Bedarf entfernen.
                  3b) Beschäftigung mit der Materie: Quelltext nach "float" durchsuchen, schauen, wie das Script die notwendige Syntax ermittelt, und, wie im anderen Posting gezeigt, anwenden (wobei man allerdings die unterschiedlichen Notationen, Punkt- & Klammernotation, in JS kennen muß -> Basiswissen, ansonsten -> 3a)).

                Gruß, Cybaer

                --
                Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
                (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
          2. http://userpage.fu-berlin.de/selfhtml/javascript/objekte/style.htm#remove_attribute

            Du meinst: http://de.selfhtml.org/javascript/objekte/style.htm#remove_attribute

            Da hab ichs her, wenn da irgendwas fehlerhaftes dran ist etc, sag es mir bitte :-)

            Du kannst es testen.

            <script type="text/javascript">  
            function removeStyle(obj, n) {  
             obj.style.removeAttribute(n, false);  
             alert('typeof style.' + n + ' = ' + typeof (obj.style[n]));  
            }  
            </script>  
            <p style="color:red" onclick="removeStyle(this, 'color')">klick</p>  
            
            

            wie du siehst ist es nicht weg.

            Du hast den gleichen Effekt mit:

            function removeStyle(obj, n) {  
             obj.style[n] = '';  
             alert('typeof style.' + n + ' = ' + typeof (obj.style[n]));  
            }  
            
            

            Struppi.

  4. Hi,

    ich würde gerne mit "removeAttribute" das float Attribut entfernen, hab allerdings nach Suche im Internet keine passende Lösung gefunden.

    ? Es gibt überhaupt kein HTML-Attribut "float", welches dann mit removeAttribute() entfernbar wäre.

    Wie man Stylesheets mittels JS ändert, steht (leicht zu ergoogeln) hier.

    Aufgrund des dortigen Listings (Funktion propertyToStyle()) wäre eine browserübergreifende Lösung für direkt gesetzte Stile dann z.B. so bastelbar:

    var floatAttributeName=(typeof(window.cssFloat)=="undefined")?"styleFloat":"cssFloat";  
    document.getElementById("Card"+IDcounter).style[floatAttributeName]="";  
    
    

    Eine alternative wäre Conditional Compilation (wobei ich jetzt nicht weiß, ob der IE/Mac ebenfalls cssFloat benutzt).

    Gruß, Cybaer

    --
    Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
    (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  5. Das Problem ist, dass float ja ein reserviertes Wort in Javascript ist und da ich den IE nutze gezwungen bin "styleFloat" zu nutzen.

    Das ist überhaupt kein Problem.

    Die beiden Versuche:
    document.getElementById("Card"+IDcounter).style.removeAttribute("styleFloat","false");
    document.getElementById("Card"+IDcounter).style.removeAttribute("float","false");
    funktionieren beide nicht.

    Wundert mich nicht, style.removeAttribute ist in Firefox und Internet Explorer undefined. Die Eigenschaften des style-Objekts werden direkt gesetzt, z.B. style.color="blue"; oder auch style["color"]="blue"; (hat beides den gleichen Effekt).

    --
    Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
    Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
    1. Ich den anderen Antworten wurde auch schon behauptet, dass "style.removeAttribute" nicht ginge.

      style.removeAttribute("width","true"); klappt aber zum Beispiel einwandfrei.

      Deshalb hab ich das ja auch "Problem" genannt, denn wäre float kein reserviertes Wort, wäre das denke ich mal genau so leicht zu entfernen wie beispielsweise "witdh" ;-)

      1. style.removeAttribute("width","true"); klappt aber zum Beispiel einwandfrei.

        Durch mehrmaliges widerholen wird die Behauptung nicht richtig.

        Deshalb hab ich das ja auch "Problem" genannt, denn wäre float kein reserviertes Wort, wäre das denke ich mal genau so leicht zu entfernen wie beispielsweise "witdh" ;-)

        Wie das geht hat dir Cybaer gezeigt.

        Struppi.

      2. Ich den anderen Antworten wurde auch schon behauptet, dass "style.removeAttribute" nicht ginge.

        Tja, ich kann nur vermuten, dass ich mich beim Testen vertippt habe, denn ein erneuter Test hat mir bestätigt, dass der Internet Explorer 6 die Methode kennt. Browserunabhängig ist es aber nicht, der Firefox 2 zumindest hat die Methode tatsächlich nicht (beim style-Objekt).

        Deshalb hab ich das ja auch "Problem" genannt, denn wäre float kein reserviertes Wort, wäre das denke ich mal genau so leicht zu entfernen wie beispielsweise "witdh" ;-)

        Eigentlich sollte das keinen Unterschied machen, aber frag Microsoft. ;-)

        --
        Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
        Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
        1. Ich den anderen Antworten wurde auch schon behauptet, dass "style.removeAttribute" nicht ginge.
          Tja, ich kann nur vermuten, dass ich mich beim Testen vertippt habe, denn ein erneuter Test hat mir bestätigt, dass der Internet Explorer 6 die Methode kennt.

          Das wurde auch nicht bestritten, aber das attribut wird nicht entfernt. Das geht nur mit selbstdefinierten Attributen.

          Struppi.

        2. Hat auch keinen Unterschied gemacht, war wohl gestern irgendwie neben der Spur. Hab ein paar Zeilen später ne Funktion aufgerufen, in der styleFloat wieder auf left gesetzt wird.
          Habs einfach übersehen.

          Ich versuche das trotzdem umzuschreiben, da es ja nur mit dem IE6 aufwärts funzt. Hab aber noch ne andre Möglichkeit für meinenen Fall gefunden ;-)

          Aber danke, zumindest einer der mir bestätigt, das die Methode zumindest "existiert" ;-)

          Gruß, Andy

          1. Aber danke, zumindest einer der mir bestätigt, das die Methode zumindest "existiert" ;-)

            Keiner bestreitet das.

            Struppi.