removeAttribute+styleFloat
Andy H.
- javascript
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
Hi,
und wenn du es gleich null setzt?
probiers mal so hier:
document.getElementById("Card"+IDcounter).style.removeAttribute("styleFloat","false")=null;
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... :-/
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ß
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
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ß
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.
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ß
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.
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ß
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
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
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.
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
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.
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
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
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 ;-)):
Gruß, Cybaer
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.
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
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).
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" ;-)
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.
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. ;-)
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.
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
Aber danke, zumindest einer der mir bestätigt, das die Methode zumindest "existiert" ;-)
Keiner bestreitet das.
Struppi.