hilfdirselbst.ch
Facebook Twitter gamper-media
"Funktioniert nicht" ist keine hinreichende Fehlerbeschreibung.
Anonym
Beiträge: 22827
30. Aug 2003, 21:32
Beitrag #1 von 3
Bewertung:
(558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werte mit getElementById holen


Tach,

ich hole mir die Position eines Elementes mit
pos = document.getElementById("werbung").style.left;

wenn ich nun Pos mit alert() ausgebe, gibt er mir immer "Warning" an.
Mit typeof() sagt er mir das das ein String wäre, so habe ich versucht es via parseInt() umzuwandeln, leider ohne Erfolg. Aber die Fehlermeldung hat sich in "NaN" geändert.

Kann mir jemand sagen, wo ich einen Fehler mache. Ich möchte doch einfach nur die Position als Int in einer Variable speichern.

Gruß Thomas Top
 
X
exquisitus
Beiträge: 247
2. Sep 2003, 02:50
Beitrag #2 von 3
Beitrag ID: #49458
Bewertung:
(558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werte mit getElementById holen


hallo Thomas

style.left, top, width, height und co müssen nicht umbedingt zahlen sein. kann zb auch "auto" oder "100%" sein. wenn du dann zb versuchts einen "auto" wert mit parseInt umzuwandeln dann kommt eben NaN (Not a Number) raus.

das problem ist hier zudem dass du mit style.left nur einen wert zurückkriegst wenn das element eine inline css deklaration hat (style="left:50px").

beispiel dazu:
1.
<div id="gugus" style="left:50px">gugus</div>
document.getElementById("gugus").style.left gibt in diesem fall '50px' zurück.

2.
<style type="text/css">
.thegugusclass {
left: 50px;
}
</style>
<div id="gugus" class="thegugusclass">gugus</div>
document.getElementById("gugus").style.left gibt in diesem fall '' zurück, da das style objekt nichts von den in der klasse definierten werten weiss.


das ganze ist ne ziemlich mühsame undurchsichtige sache am anfang.

was ich immer wieder mal mache ist im onload handler die objekt-referenzen anzulegen und alle werte die nachher via script veränderbar sein müssen explizit auf initialwerte zu setzen.


zb:

var obj1 = null;
var obj2 = null;
onload = function() {
obj1 = document.getElementById("erstesObjekt");
obj2 = document.getElementById("zweitesObjekt");
obj1.style.left = "50px";
obj2.style.left = "150px";
//ab hier hat dann style.left immer einen gültigen/brauchbaren wert.
};


hth
gruss
Steven

PS: wenn du die werte nur auslesen (nicht nachträglich verändern willst) kannst du auch mit den browser-spezifischen attributen arbeiten. für ie zb elm.style.pixelLeft oder elm.offsetLeft.
als Antwort auf: [#49326] Top
 
Anonym
Beiträge: 22827
2. Sep 2003, 12:52
Beitrag #3 von 3
Beitrag ID: #49509
Bewertung:
(558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werte mit getElementById holen


Hallo exquisitus,

ich danke dir. Du hast mir sehr geholfen.
Das Problem war, das ich das in einer externen CSS-Datei folgendermaßen initialisiere:

#werbung {position:absolute; left:150px;}

Ich wollte diesen Wert nur auslesen, damit ich bei Veränderung diesen nur einmal ändern müßte. Sonst dürfte ich diesen Wert 10x ändern, wenn ich an jeder Stelle, wo ich diesen Wert bräuche, lokal eingebe. Dann hätte ich überall im Quelltext so eine Zeile.

Var werbunglinks = 150px;

Und das wollte ich vermeiden.

Gruß Thomas
als Antwort auf: [#49326] Top