Hallo!
Ich habe schon im Forum und bei Google gesucht, aber nix hat mir weitergeholfen.
Ich versuche (im FF erfolgreich) ein div auszublenden. Hintergrund ist der, dass ich per AJAX etwas auf dem Server speichere und dem User eine Rückmeldung geben möchte, die 5 Sek. angezeigt und dann sanft ausgebended werden soll. Hier mein Code (erst JS):
Hier der CSS-Teil:
Wie ihr seht, habe ich eine externe css-Datei, in der ich einen filter für den IE und opacity für FF setze. im Javascript ändere ich diese Einstellung. Wie gesagt, im FF funktioniert es einwandfrei, im IE (auch 7) passiert Folgendes:
Die Transparenz des divs ändert sich nicht, wenn ich mir aber den Rückgabewert von get_extern_style_property ausgeben lasse (z.B. per alert()) sehe ich den erwarteten Wert. Wie passt das zusammen!?
Hat jemand 'ne andere (universelle) Lösung zum ausfaden lassen von divs (oder Objekten allgemein)
Danke schonmal
Ich habe schon im Forum und bei Google gesucht, aber nix hat mir weitergeholfen.
Ich versuche (im FF erfolgreich) ein div auszublenden. Hintergrund ist der, dass ich per AJAX etwas auf dem Server speichere und dem User eine Rückmeldung geben möchte, die 5 Sek. angezeigt und dann sanft ausgebended werden soll. Hier mein Code (erst JS):
HTML:
function fade_out(objName, browser, cssObj)
{
fade_outObj = document.getElementsByName(objName);
if(browser != "IE") // For FF and others
{
if(get_extern_style_property(cssObj, "opacity")>0)
{
opacity = get_extern_style_property(cssObj, "opacity");
set_extern_style_property(cssObj, "opacity", opacity-0.10);
window.setTimeout("fade_out('"+objName+"', '"+browser+"', '"+cssObj+"')", 35);
}
}
else // For IE
{
opacity_tmp = get_extern_style_property(cssObj, "filter")
var r, re;
re = /\D/g;
opacity_tmp = opacity_tmp.replace(re, "");
if(opacity_tmp > 0)
{
set_extern_style_property(cssObj, "filter", "Alpha(Opacity="+(opacity_tmp-10)+")");
window.setTimeout("fade_out('"+objName+"', '"+browser+"', '"+cssObj+"')", 35);
}
}
}
function set_extern_style_property(strSelectorText, strProperty, varValue)
{
strSelectorTextIndex = -1;
if(document.styleSheets)
{
// Get stylesheet
if(document.styleSheets[0].cssRules) // FF and others
objStyles = document.styleSheets[0].cssRules
else // IE
objStyles = document.styleSheets[0].rules
// Search for classname
for(var i=0; i<objStyles.length; i++)
{
// Falls der aktuelle Regelname dem gewünscheten Selektorname entspricht
if(objStyles[i].selectorText.toLowerCase() == strSelectorText.toLowerCase())
{
strSelectorTextIndex = i;
break;
}
}
}
if(strSelectorTextIndex > 0)
{
eval("objStyles["+strSelectorTextIndex+"].style."+strProperty+"='"+varValue+"'"); // Set new value (string)
}
}
// Gets the value of a property of an css-object which is defined in an extern stylesheet document
function get_extern_style_property(strSelectorText, strProperty)
{
if(document.styleSheets)
{
// Get stylesheet
if(document.styleSheets[0].cssRules) // FF and others
objStyles = document.styleSheets[0].cssRules
else // IE
objStyles = document.styleSheets[0].rules
// Search for name
for(var i=0; i<objStyles.length; i++)
{
// Falls der aktuelle Regelname dem gewünscheten Selektorname entspricht
if(objStyles[i].selectorText.toLowerCase() == strSelectorText.toLowerCase())
{
strSelectorText = i;
break;
}
}
}
// Get and return value
return eval("objStyles["+strSelectorText+"].style."+strProperty);
}
Hier der CSS-Teil:
HTML:
div.usr_mgmt_save_info_ok {
color: Green;
text-align: left;
font-weight: bold;
background-color: #EAFFF0;
border: 1px solid #128F35;
margin: 5px;
padding-top: 6px;
padding-bottom: 10px;
padding-left: 5px;
padding-right: 5px;
height: 28px;
min-height: 28px;
opacity: 1.0; /* FF and others */
filter: Alpha(opacity = 100); /* IE only */
}
Wie ihr seht, habe ich eine externe css-Datei, in der ich einen filter für den IE und opacity für FF setze. im Javascript ändere ich diese Einstellung. Wie gesagt, im FF funktioniert es einwandfrei, im IE (auch 7) passiert Folgendes:
Die Transparenz des divs ändert sich nicht, wenn ich mir aber den Rückgabewert von get_extern_style_property ausgeben lasse (z.B. per alert()) sehe ich den erwarteten Wert. Wie passt das zusammen!?
Hat jemand 'ne andere (universelle) Lösung zum ausfaden lassen von divs (oder Objekten allgemein)
Danke schonmal