korn: Stylesheet ändern

Hallo forumsgemeinde!

Ich würde gerne nach dem Klick auf einen Link, dass per JavaScript das Stylesheet geändert wird. Also von

<link rel="stylesheet" type="text/css" href="css/style.css" />

zu

<link rel="stylesheet" type="text/css" href="css/style2.css" />

Wie wäre das per javascript zu realisieren? Kenne mich mit js leider fast gar nicht aus und ehrlich gesagt mag ichs auch nicht sehr :$

MfG
Korn

--
ie:{ fl:{ br:> va:{ ls:# fo:| rl:( n4:( ss:( de:> js:{ ch:{ sh:} mo:? zu:)
  1. Hallo,

    Ich würde gerne nach dem Klick auf einen Link, dass per JavaScript das Stylesheet geändert wird. Also von

    <link rel="stylesheet" type="text/css" href="css/style.css" />

    zu

    <link rel="stylesheet" type="text/css" href="css/style2.css" />

    Wie wäre das per javascript zu realisieren?

    Am besten generierst du den Link erstmal komplett mit JS. Das hat den Vorteil, dass Anwender ohne JS nicht durch einen unnötigen Link verunsichert werden.

      
    var Link = document.createElement("a");  
    Link.onclick = function(){document.getElementsByTagName("link")[0].href = "css/style2.css";}  
    Link.appendChild(document.createTextNode("Stylesheet ändern"));  
    Link.href = "javascript:void(0)";  
    
    

    Jetzt musst du dir noch überlegen, wie und wo du den Link einfügst. Am Ende des <body> ginge das z.B so:

    document.body.appendChild(Link);

    ansonsten eben am Ende eines anderen Elementes oder vor/nach einem Element:

    Parent.insertBefore(Link,Element_danach)

    […] und ehrlich gesagt mag ichs auch nicht sehr :$

    Kann ich eigentlich kaum verstehen. JS ist doch das schönste, was es gibt (sofern es nicht für Nervereien Missbraucht wird). Allerdings sollte man auch immer eine Alternative anbieten.

    mfg. Daniel

    1. Hallo Daniel.

      Ich würde gerne nach dem Klick auf einen Link, dass per JavaScript das Stylesheet geändert wird. Also von

      <link rel="stylesheet" type="text/css" href="css/style.css" />

      zu

      <link rel="stylesheet" type="text/css" href="css/style2.css" />

      Wie wäre das per javascript zu realisieren?

      Am besten generierst du den Link erstmal komplett mit JS. Das hat den Vorteil, dass Anwender ohne JS nicht durch einen unnötigen Link verunsichert werden.

      var Link = document.createElement("a");
      Link.onclick = function(){document.getElementsByTagName("link")[0].href = "css/style2.css";}
      Link.appendChild(document.createTextNode("Stylesheet ändern"));
      Link.href = "javascript:void(0)";

        
      Am bessersten™ nimmst du an Stelle eines Links einen Button. Dann kannst du dir auch das hässliche „javascript:void(0)“ sparen.  
        
        
      Einen schönen Sonntag noch.  
        
      Gruß, Mathias  
      
      -- 
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
        
      debian/rules
      
      1. Hi,

        Am bessersten™ nimmst du an Stelle eines Links einen Button. Dann kannst du dir auch das hässliche „javascript:void(0)“ sparen.

        IMHO noch besser: man setzt den Funktionsaufruf direkt hinter das Pseudoprotokoll "javascript:"! Dann kann man ggf. auch noch an der Statuszeile sehen was beim Klick auf den Link passieren soll.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Hallo,

          Am bessersten™ nimmst du an Stelle eines Links einen Button. Dann kannst du dir auch das hässliche „javascript:void(0)“ sparen.

          IMHO noch besser: man setzt den Funktionsaufruf direkt hinter das Pseudoprotokoll "javascript:"!

          Ob das besser ist, ist fraglich.
          Denn:
          • man kann per „this“ z.B. nicht mehr direkt auf den Link verweisen
          • Ein Rückgabewert führt dazu, dass dieser auf einer leeren Seite angezeigt wird.
          • man erstellt eine Zeichenkette, deren Funktionsweise teilweise etwas problematisch ist (OK, hat auch Vorteile).

          Dann kann man ggf. auch noch an der Statuszeile sehen was beim Klick auf den Link passieren soll.

          Sofern der Seitenautor einen sinnvollen Funktionsnamen wählt, ja.

          Hm, alternativ könnte man vielleicht auch in den void-Operator eine sinnvolle Zeichenkette setzen.

          z.B.
          javascript:void("Stylesheet ändern")

          wäre zumindest eine Option. Ausgeführt wird da ja eh nix.

          mfg. Daniel

          1. Hi,

            • man kann per „this“ z.B. nicht mehr direkt auf den Link verweisen

            Wird hier nicht benötigt.

            • Ein Rückgabewert führt dazu, dass dieser auf einer leeren Seite angezeigt wird.

            Man kann Funktionen auch ohne RW schreiben. Ansonsten kann man immer noch void() nehmen. Das eine schließt das andere ja nicht aus.

            • man erstellt eine Zeichenkette, deren Funktionsweise teilweise etwas problematisch ist

            ?

            Sofern der Seitenautor einen sinnvollen Funktionsnamen wählt, ja.

            Ja klar. =:-)

            Hm, alternativ könnte man vielleicht auch in den void-Operator eine sinnvolle Zeichenkette setzen.

            Auch 'ne Idee - auch wenn sie mich vielleicht stärker verwirren würde ... %-)

            Gruß, Cybaer

            PS: Prinzipiell bin ich der Meinung, daß JS uns nicht x Möglichkeiten bietet, damit wir nur auf die vielleicht am meisten gebräuchlichste/bekannteste/in anderen Fällen vielleicht sinnvollste Möglichkeit beschränken ... ;-)

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. Hallo,

              • man kann per „this“ z.B. nicht mehr direkt auf den Link verweisen

              Wird hier nicht benötigt.

              Kann aber, wenn man sich das „href="javascript:…“, erst einprägt zu unnötig umständlich Programmierweise führen.

              • Ein Rückgabewert führt dazu, dass dieser auf einer leeren Seite angezeigt wird.

              Man kann Funktionen auch ohne RW schreiben.

              Schon klar, aber im Beispiel war ja nur ein Befehl. Um der gibt auf jeden Fall einen Wert zurück.

              Ansonsten kann man immer noch void() nehmen. Das eine schließt das andere ja nicht aus.

              Hm, das bringt aber teilweise wieder andere Probleme mit such. So verursachen Variablen z.B. oft einen Fehler, wenn sie direkt im Operator stehen.

              • man erstellt eine Zeichenkette, deren Funktionsweise teilweise etwas problematisch ist

              ?

              Der Umgang mit Variablen, kann z.B. etwas komisch sein. Ich kann für diesen Fall jetzt kein konkretes Beispiel nennen. Aber wenn man z.B. setTimeout() verwendet, ist die function(){}-Schreibweise meist besser, weil man dann auch auf Variablen zugreifen kann, die sich innerhalb einer Funktion befinden. Ob das in diesem Fall relevant ist, kann ich aber nciht so genau sagen.

              Hm, alternativ könnte man vielleicht auch in den void-Operator eine sinnvolle Zeichenkette setzen.

              Auch 'ne Idee - auch wenn sie mich vielleicht stärker verwirren würde ... %-)

              Naja, das kommt darauf an.
              Alternativ könnte man den Verarbeitungsvorgang nach dem Eventhandler auch mit return false abbrechen und nur javascript:"das passiert", bzw. gleicht „das passiert“ als URI verwenden. Allerdings wäre mit das zu unsauber - und wenn dann doch mal der Link losgeht…

              PS: Prinzipiell bin ich der Meinung, daß JS uns nicht x Möglichkeiten bietet, damit wir nur auf die vielleicht am meisten gebräuchlichste/bekannteste/in anderen Fällen vielleicht sinnvollste Möglichkeit beschränken ... ;-)

              Andererseits könnte man aber auch davon ausgehen, dass das „javascript:“-Protokoll eigentlich dafür gedacht ist, dass man diverse Befehle auch einfach in die Adressleiste eingeben oder sich Bookmarklets erzeugen kann…

              mfg. Daniel

  2. Hallo forumsgemeinde!

    Ich würde gerne nach dem Klick auf einen Link, dass per JavaScript das Stylesheet geändert wird.

    Geh doch mal ins Archiv oder zu Google und suche nach "style switcher".
    Gruß Wastl