Objekt + Properties erst zur Laufzeit zusammensetzen
Nicolas
- javascript
0 Martin0 Nicolas
0 Thomas Mell0 Nicolas
0 Joachim
Hi Leute,
wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.
--------------------------------------------------
var obj = document.styleSheets(ss).rules(sr).style;
if i=1
{
obj = obj + backgroundColor
}
else
{
obj = obj + Color
}
--------------------------------------------------
Gruesse,
Nicolas
Hi Nicolas,
wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen?
Also, in Javascript erhält ein Objekt dadurch eine neue Eigenschaft, dass man dieser Eigenschaft einen Wert zuweist. Wenn Du also in Deinem Skript die Anweisung
window.document.blubb = 4;
einbaust, hat Dein document-Objekt dadurch automatisch die Eigenschaft 'blubb'. Was das genau ist, kann ich Dir aber nicht sagen; dafür ist Verona zuständig.
z.B.
var obj = document.styleSheets(ss).rules(sr).style;
if i=1
{
obj = obj + backgroundColor
-> falsch!
-> einfach
-> obj = obj.backgroundColor = null;
}
else
{
obj = obj + Color
-> falsch!
-> einfach
-> obj = obj.Color = null;
}
Statt 'null' zu verwenden, kannst Du der neuen Eigenschaft (oder auf neudeutsch Property) auch gleich einen anständigen Wert zuweisen.
HTH,
Martin
Hallo Martin,
nein, so wollte ich das nicht lösen.
Ich möchte aus einem vorhandenen StyleSheet ein bestimmtes Property einer Klasse auslesen und einem anderen Object den Wert dieses Property übergeben.
Das sieht bisher so aus:
---------------------------------
<script>
var obj = document.all.tags('TH');
function GetClassProperty( class_name, prop_name)
{
for (ss=0 ; ss < document.styleSheets.length; ss++)
{
for (sr=0 ; sr < document.styleSheets(ss).rules.length; sr++)
{
if (document.styleSheets(ss).rules(sr).selectorText == class_name)
{
var obj = document.styleSheets(ss).rules(sr).style;
obj = eval(obj + prop_name);
return obj;
}
}
}
}
for (i=0; i < 5; i++)
{
if (obj(i).innerText > 0)
{
obj(i).runtimeStyle.color = GetClassProperty( '.highlight', '.backgroundColor');
}
}
</script>
----------------------------
Hi Nicolas,
wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen?
Also, in Javascript erhält ein Objekt dadurch eine neue Eigenschaft, dass man dieser Eigenschaft einen Wert zuweist. Wenn Du also in Deinem Skript die Anweisung
window.document.blubb = 4;
einbaust, hat Dein document-Objekt dadurch automatisch die Eigenschaft 'blubb'. Was das genau ist, kann ich Dir aber nicht sagen; dafür ist Verona zuständig.
z.B.
var obj = document.styleSheets(ss).rules(sr).style;
if i=1
{
obj = obj + backgroundColor
-> falsch!
-> einfach
-> obj = obj.backgroundColor = null;
}
else
{
obj = obj + Color
-> falsch!
-> einfach
-> obj = obj.Color = null;
}
Statt 'null' zu verwenden, kannst Du der neuen Eigenschaft (oder auf neudeutsch Property) auch gleich einen anständigen Wert zuweisen.
HTH,
Martin
Hallo,
probiere es mal so
var obj = document.styleSheets(ss).rules(sr).style;
if (i == 1)
{
obj = eval(obj + '.backgroundColor');
}
else
{
obj = eval(obj + '.Color');
}
viele Gruesse
Thomas
Hallo Thomas,
das klappt nicht...
bekomme im IE 5 ne Fehlermeldung, dass das Object undefiniert ist.
Gruss, Nicolas
Hallo,
probiere es mal so
var obj = document.styleSheets(ss).rules(sr).style;
if (i == 1)
{
obj = eval(obj + '.backgroundColor');
}
else
{
obj = eval(obj + '.Color');
}
viele Gruesse
Thomas
hi,
wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.
teste:
var bgC = document.layers? 'bgColor' : 'backgroundColor';
// obj.referenz
function dRefS(num)
{
return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
}
Wenn Du jetzt ein div-layer mit der id "ebene0" hast:
dRefS('ebene0')[bgC] = "red";
hth
Gruesse Joachim
hi,
achtung, hier den ForumsEndBegrenzerZeilenumbruch rausnehmen !!!
return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
Gruesse Joachim
Moin,
achtung, hier den ForumsEndBegrenzerZeilenumbruch rausnehmen !!!
return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
Warum machst du nicht einfach dein Fenster groesser? ;)
Das Forum begrenzt gar nichts ;) Das ist ein Feature von HTML.
Viele Gruesse,
n.d.p.
hi,
Warum machst du nicht einfach dein Fenster groesser? ;)
Das Forum begrenzt gar nichts ;) Das ist ein Feature von HTML.
hihi, bin ich *...* Bin halt die 70-Zeichen aus dem usnet gewoehnt ;-)
Danke fuer die Erhellung
Gruesse Joachim
Hallo Joachim,
jo, jetzt gehts.
Danke und Grüsse,
Nicolas
hi,
wie setzt man erst zur Laufzeit individuell ein Objekt mit seinen Eigenschaften zusammen, z.B.
teste:
var bgC = document.layers? 'bgColor' : 'backgroundColor';
// obj.referenz
function dRefS(num)
{
return (document.layers? document.layers[num]:(document.all? document.all[num].style:document.getElementById(num).style))
}
Wenn Du jetzt ein div-layer mit der id "ebene0" hast:
dRefS('ebene0')[bgC] = "red";
hth
Gruesse Joachim