Forenindex » Programmierung/Entwicklung » JavaScript » Werte mit getElementById holen

Werte mit getElementById holen

Anonym
Beiträge gesamt: 22827

30. Aug 2003, 21:32
Bewertung:

gelesen: 773

Beitrag als Lesezeichen
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

Werte mit getElementById holen

exquisitus
Beiträge gesamt: 247

2. Sep 2003, 02:50
Bewertung:

gelesen: 773

Beitrag als Lesezeichen
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.

Werte mit getElementById holen

Anonym
Beiträge gesamt: 22827

2. Sep 2003, 12:52
Bewertung:

gelesen: 773

Beitrag als Lesezeichen
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