css switch+javascript
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
all
ausschneiden
beispiel
bild
body
datei
fehler
fram
grauen
hilfe
hintergrundbild
hintergrundfarbe
komplex
mitte
null
nut
schulseite
skin
stattdessen
wechsel
-
hi ich will ne css datei per javascript ?ndern lassen f?r ne schulseite aber auf dem server ist kein php installiert hab hier ein script aber das geht nicht
zeigt an das newstyle nicht definiert ist
<script language="javascript">
function fixDate(date) {
var base = new Date(0);
var skew = base.getTime();
if (skew > 0) date.setTime(date.getTime() - skew);
}
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
}
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf(prefix);
if (begin == -1) return null;
var end = document.cookie.indexOf(";", begin);
if (end == -1) end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}
var skin = getCookie("skins");
if(!skin){
var style = 1;
var now = new Date();
fixDate(now);
now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
setCookie("skins", skin, now);
}
if(skin == 1){
document.writeln("<link rel='stylesheet' href='skin1.css'>");
}
if(skin == 2){
document.writeln("<link rel='stylesheet' href='skin2.css'>");
}
if(skin == 3){
document.writeln("<link rel='stylesheet' href='skin3.css'>");
}
function changeskin(newskin){
setCookie("skins", newstyle, now);
window.location.reload( false );
}
</script>
<a href="javascript:changeskin(1)">Skin1</a>
<a href="javascript:changeskin(2)">Skin2</a>
<a href="javascript:changeskin(3)">Skin3</a> -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
newstyle kommt ja auch nur einmal im ganzen Quelltext vor:
function changeskin(newskin)
{
setCookie("skins", newstyle, now);
window.location.reload( false );
}
Muss da stattdessen vielleicht newskin stehen? -
Das wird schwierig. Du kannst zwar ?ber JavaScript aus dem Iframe heraus auf den Parent Frame zugreifen (oder ungekehrt), aber die CSS Datei kannst du so nicht ?ndern, ohne einen Reload zu erzwingen.
Wenn die verschiedenen Skins nicht allzu komplex sind, k?nntest du auch mit ein bis zwei for-Schleifen arbeiten.
Beispiel:
=====------=====
<span style="color:red" name="skin">jo</span>
<span style="color:red" name="skin">ne></span>
<span style="color:red" name="skin">ne></span>
<script language="JavaScript" type="text/javascript">
<!--
function skin_aendern()
{
for(var i=0; i<window.document.getElementsByName["skin"].length;i++ )
{
window.document.getElementsByName["skin"].style.color=window.document.getElementsByName["skin"].style.color="green";
}
}
//-->
</script>
<br /><a href="javascript:skin_aendern();">Skin wechseln</a>
=====------=====
Sollte ?ber den Link die Texte dann gr?n f?rben (bin mir nur nicht sicher, ob das mit length funktioniert um zu checken wie gro? der Array ist).
Ist erstmal ein Beispiel; m?sste nat?rlich noch kr?ftig ausgebaut werden. -
thx erstmal naja ich bin nicht gerade javascript pro un kann das nicht alleine umschreiben zeigt mir n fehler an bei window.document.getElementsByName["skin"].length;i++
zeigt an das das null ist
also die skins sind schon komplex da ich die ganzen hintergrundbilder der tabllen definiert habe in einer css datei aber das ist nicht das prob im iframe muss eigentlich nut die hintergrundfarbe ge?ndert werden (eig noch die scrollbar aber geht sowieso nur mit ie und dann lass ich das halt weg)
thx -
OK, dann funz das mit length doch nicht wegen der Array Gr??e.
Die Hintergrundfarbe ?nderst du so:
Im Iframe:
<body style="background-color: #ffffff" id="bla">
JavaScript:
window.document.getElementById["bla"].style.backgroundColor="#ff0000";
Musst nur noch richtige Farbwerte einsetzen! -
wie baue ich das in einen link ein? un wenn in dem link schon
<a href="javascript:changeskin(1)">Skin1</a> (s.h. skript oben)
steht? die hintergrundbilder werden ge?ndert nur im iframe muss die hintergrundfarbe ge?ndert werden in iframe sind keine hintergrundbilder
thx im vorraus -
Dieser Link steht nicht im iframe, oder?
-
hi hab schnell mit paint^^ bild (http://illtill.milten.lima-city.de/page.jpg) gemalt also links is men? un in der mitte der iframe wenn ich jetzt die grauen hintergrundgrafiken per css geladen werden wenn man auf den link geklickt hat dann wechselt sich die hintergrundgrafik aber die hintergrundfarbe (auf bild jetzt mal rot weil vorher z.b die grafiken au?erhalb des iframes rot waren) im iframe nicht ich will jetzt dass sich die hintergrundfarbe z.b auf dem bild in grau ?ndert wenn ich auf den link mit javascript:changeskin bla dr?cke die css datei gewechselt wird was ja geht (dank mf2) und die hintergrundfarbe des iframes entsprechend der b(ack)g(round)bilda(au?erhalb des iframes) wechselt
thx f?r all die hilfe -
?ndere den Code mal so:
if(skin == 1){
document.writeln("<link rel='stylesheet' href='skin1.css'>");
window.frames[0].document.getElementById["body"].style.backgroundColor="#ff0000";
}
(Entsprechend f?r die anderen)
Und im iFrame dann so ?ndern:
<body id="body">
(Das Attribut id ist wichtig) -
sorry aber das geht immer noch nicht hab alles so gemacht aber die farbe im iframe ?ndert sich nicht liegt das vll daran dass es n iframe ist un kein "normaler" frame? aber trotzdem thx f?r die arbeit
-
Was sagt denn alert(window.frames) au?erhalb des fensters?
-
hat mir bei meinem pc gar kein fehler angezeigt aber bei nem freund dann den
window.frames[0].document ist null oder kein objekt
hier ein ausschnitt:
}
if(skin == 1){
document.writeln("<link rel='stylesheet' href='styles/rot.css'>");
window.frames[0].document.getElementById["body"].style.backgroundColor="#ff0000";
} -
Der code wird NICHT im iFrame ausgef?hrt, oder?
probier mal:
<iframe id="hm" ... >
</iframe
JS Code:
alert(window.document.getElementById("hm")); -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage