Javascript - Texte tauschen



  • Und zwar beabsichtige ich auf einer Webseite, wie der name schon sagt, Texte zu tauschen.
    Die Texte sind die Beschriftung einer Checkbox. Diese Checkbox befindet sind in:

    <fieldset>
        <legend>Nummer 1</legend>
        Hier ist Chexkbox 1 mit Text.
    </fieldset>
    <fieldset>
        <legend>Nummer 2</legend>
        Hier ist Chexkbox 2 mit Text.
    </fieldset>
    

    Geht man nun mit dem Cursor in das erste fieldset, so sollen sich die beschriftungen sammt Checkbox tauschen. Und der Legend text natürlich auch.
    Ist das mit Javascript machbar? Vllt mit onMouseOver o.ä.?

    Hat jemand vllt einen Tipp für mich?

    Danke schon mal!
    Sqwan



  • Ja, das sollte möglich sein.

    du kannst deinen fieldsets eine id verpassen, um mittels document.getElementById darauf zugreifen zu können. Über die Eigenschaft innerHTML des jeweiligen Objekts kannst du auf den Quelltext zwischen den Tags auslesen.

    Hier mal ein ganz schneller Ansatz:

    <fieldset id="a" onmouseover="mover(this)">
        <legend>Nummer 1</legend>
        Hier ist Chexkbox 1 mit Text.
    </fieldset>
    <fieldset id="b" onmouseover="mover(this)">
        <legend>Nummer 2</legend>
        Hier ist Chexkbox 2 mit Text.
    </fieldset>
    
    <script type="text/javascript">
    	function mover(obj)
    	{
    		var html = obj.innerHTML;
    
    		if(obj.id == "a")
    		{
    			obj.innerHTML = document.getElementById("b").innerHTML
    			document.getElementById("b").innerHTML = html;
    		}
    		else
    		{
    			obj.innerHTML = document.getElementById("a").innerHTML
    			document.getElementById("a").innerHTML = html;
    		}
    	}
    </script>
    

    (nur für Firefox 3.6 getestet)



  • einfach nach dem schließenden body-tag einfügen.

    <script type="text/javascript">
      (function() {
        firstFieldset = document.getElementsByTagName("fieldset")[0];
        secondFieldset = document.getElementsByTagName("fieldset")[1];
        parent = firstFieldset.parentNode;
    
        switchIt = function() {  
          parent.replaceChild(firstFieldset, secondFieldset);
          parent.insertBefore(secondFieldset, firstFieldset);
    
          temp = firstFieldset;
          firstFieldset = secondFieldset;
          secondFieldset = temp;
        };
    
        firstFieldset.onmousemove = switchIt;
      })();
    </script>
    


  • zwutz schrieb:

    einfach nach dem schließenden body-tag einfügen

    Ich vermute, du meinst hier VOR dem schließenden body-tag 🙂



  • BasicMan01 schrieb:

    Ich vermute, du meinst hier VOR dem schließenden body-tag 🙂

    ist irrelevant, ich habs aber lieber draußen


  • Mod

    zwutz schrieb:

    ist irrelevant, ich habs aber lieber draußen

    Ne ne ne.

    Das ist unsauber. Einfach domready verwenden und fertig.



  • Shade Of Mine schrieb:

    Das ist unsauber. Einfach domready verwenden und fertig.

    ich sag niemandem, dass er sich ein wegen so einer Kleinigkeit ein Framework holen soll, wenn er diese Möglichkeit nicht explizit angibt.
    Das meine Möglichkeit die Beste ist, hab ich nie behauptet, aber sie funktioniert, ohne das er was an seiner Seite ändern muss


  • Mod

    zwutz schrieb:

    ich sag niemandem, dass er sich ein wegen so einer Kleinigkeit ein Framework holen soll, wenn er diese Möglichkeit nicht explizit angibt.
    Das meine Möglichkeit die Beste ist, hab ich nie behauptet, aber sie funktioniert, ohne das er was an seiner Seite ändern muss

    Mich stoert lediglich die aussage dass das script nach dem body tag sein soll.
    Denn das ist unsauber und kann in gewissen situationen (die hier zwar nicht gegeben sind) probleme verursachen.

    deshalb: die saubere variante ist domready - wozu man keine library braucht, das kann man auch selber schreiben, sind 5-7 zeilen. die unschoene variante ist am ende des bodys.



  • in welchen gewissen Situationen kann das zu Problemen führen?


  • Mod

    zwutz schrieb:

    in welchen gewissen Situationen kann das zu Problemen führen?

    Ein getElementsByTag kann je nach Situation den script tag liefern oder auch nicht.

    Prinzipiell ist aber das Hauptproblem dass der Browser in den Quirksmode faellt - und das obwohl es dir keinen Vorteil bringt.



  • das ist ne keine funpage... sie hat weder body noch head, es sei denn ich brauchs dringen. Das lustige soll sein, das man nur ja anklicken kann! Einen absendenbutten brauch ich nicht. Ich wills ja garnicht absenden. Der benutzer wird den zweck jedenfalls erkennen... Das ding wird dann als html datei mit den paar zeilen per mail verschickt.

    Habe die sachen mal in ne Datei rein kompiert. Muss sie jetzt nurnoch so ändern das da wo die Maus ist immer "Ja" ist.


  • Mod

    Sqwan schrieb:

    Das ding wird dann als html datei mit den paar zeilen per mail verschickt.

    Als attachment hoffe ich doch, denn die meisten email systeme erlauben kein inline javascript...



  • nene... schon als anhang


Anmelden zum Antworten