Hallo,
hourglass=document.getElementById("hourglass"); //Display-area for search-timer
var bodyStyle,hourglassStyle;
if (document.body.currentStyle)
{
//IE
bodyStyle = document.body.currentStyle;
hourglassStyle= hourglass.currentStyle;
}
else if (window.getComputedStyle)
{
bodyStyle = window.getComputedStyle(document.body, null);
hourglassStyle= window.getComputedStyle(hourglass, null);
}
Sowei gut. Aber den hourglassStyle benötigst Du nicht.
with (hourglassStyle)
{
backgroundImage=bodyStyle.backgroundImage;
background=bodyStyle.background;
border="solid 1px "+bodyStyle.color;
}
Nein! So geht das nicht. Das Objekt hourglassStyle ist hier in DOM2-fähigen Browsern ein CSSStyleDeclaration und im IE ein proprietäres Objekt. Beim DOM-Objekt, beim IE weiß ich es nicht so genau, kannst Du nicht einfach dessen Eigenschaften Werte zuweisen. Du müsstest die entsprechenden Methoden dazu benutzen. Aber so kompliziert musst Du es gar nicht machen. Das _Zuweisen_ der Eigenschaften kannst Du schon mit dem .style-Objekt des Elementes hourglass realisieren. Jetzt bist Du ja bereits im View und Du willst ja nicht wirklich die CSS-Ressource ändern? Das Problem war nur, dass DOM nicht auf die CSS-Ressource zugreifen kann sondern nur auf das HTML-Dokument und, dass bei diesem Zugriff uninteressant ist, wie der Browser HTML und CSS verbindet. Wenn JavaScript DOM-Elementen styles zuweist, dann wird das aber vom View schon dargestellt. ... meistens ;-)
with (hourglass)
{
style.backgroundImage=bodyStyle.backgroundImage;
style.border="solid 1px "+bodyStyle.color;
}
Das "style.background=bodyStyle.background;" wäre nicht so einfach, weil das beim IE wieder etwas anderes ist, als beim DOM2. Man sollte aber ohnehin mit Javascript keine CSS-Sammeleigenschaften setzten. In der Reighenfolge, wie Du es angegeben hattest, würde das Setzten von background ja das backgroundImage wieder auf default setzen. Ein "style.backgroundColor=bodyStyle.backgroundColor;" würde funktionieren.
viele Grüße
Axel