Nina: Funktion über nur einen Link

hallo leute,

ich habe was zum markieren des hintergrundes geschrieben

<script type="text/javascript">
<!--
function HighlightTag(tagShow,stat) {

if(stat == "an")
{
 for(var i = 0; i < document.getElementsByName(tagShow).length; i++) {
   document.getElementsByName(tagShow)[i].style.backgroundColor = "#FF9933";
 }
}
else
{
 for(var i = 0; i < document.getElementsByName(tagShow).length; i++) {
   document.getElementsByName(tagShow)[i].style.backgroundColor = "";
 }
}
}
//-->
</script>

allerdings muss ich jetzt zum an- und zum ausschalten einen link setzten:
<a href="javascript:HighlightTag('Mittwoch','an')"><b>Mittwoch an</b></a> <a href="javascript:HighlightTag('Mittwoch','aus')"><b>Mittwoch aus</b></a>

kann ich das nicht über einen link machen, sodass sich javascript merkt, dass ich schon angeschltet haben und bei nochmaligem klick auf den link den hintergrund ausschaltet?

danke an alle...
nina

  1. Hallo

    <a href="javascript:HighlightTag('Mittwoch','an')"><b>Mittwoch an</b></a> <a href="javascript:HighlightTag('Mittwoch','aus')"><b>Mittwoch aus</b></a>

    Das sind keine schönen Links!
    <a href="#" onCLick="HighlightTag(...); return false;"> ist viel schöner (s. Archiv und ein paar hreads weiter unten)

    kann ich das nicht über einen link machen, sodass sich javascript merkt, dass ich schon angeschltet haben und bei nochmaligem klick auf den link den hintergrund ausschaltet?

    Baue dir eine Variabel, die sich den Status merkt und werte diese entsprechend aus und handle danach.

    Grüße

    David

    --
    "Nobody will ever need more than 640k RAM!"
    1981 Bill Gates
    1. Hi

      Baue dir eine Variabel, die sich den Status merkt und werte diese entsprechend aus und handle danach.

      Leider weiss ich garnicht wie ich das machen soll ...

      Hast Du einen tipp?

      LG Nina

      1. Hallo

        <script type="text/javascript">
        <!--

        var high = false;

        function HighlightTag(tagShow) {
        if(high) {
         for(var i = 0; i < document.getElementsByName(tagShow).length; i++)
           document.getElementsByName(tagShow)[i].style.backgroundColor = "#FF9933";
         high = false;
        } else {
         for(var i = 0; i < document.getElementsByName(tagShow).length; i++)
           document.getElementsByName(tagShow)[i].style.backgroundColor = "";
          high = true;
        }
        }
        //-->
        </script>

        ungetestet ;)
        Du musst dann noch jeweils den 2ten Parameter aus den Links nehmen.

        Grüße

        David

        --
        "Nobody will ever need more than 640k RAM!"
        1981 Bill Gates
        1. Hi,

          leider läuft das nicht.

          var high = false;

          Liegt das evtl daran, das ja bei jedem Aufruf der Funktion high=false gesetzt wird??

          nina

          1. Hallo

            Liegt das evtl daran, das ja bei jedem Aufruf der Funktion high=false gesetzt wird??

            Das bestimmtnicht, zumal das ja auch gar nicht der Fall ist.
            Poste doch mal nen Link wo man sich das ganze anschauen kann.

            Ich hab m das grad mal in klein nachgebaut und da funktioniert es bestens:

            <html>
            <head>
            <script type="text/javascript">
            var test = false;
            function abc() {
              alert(test);
              if (test) {
                test = false;
              } else {
                test = true
              }
            }
            </script>
            </head>
            <body>
            <a href="#" onClick="abc(); return false;"> TESTLINK</a>
            </body>
            </html>

            Grüße

            David

            --
            "Nobody will ever need more than 640k RAM!"
            1981 Bill Gates
            1. Hi,

              hier mein Quelltext - was mache ICH falsch???

              <script type="text/javascript">
              <!--
              var highStatus = false;

              function HighlightTag(tagShow,colorShow) {

              tagShowEinzeln=tagShow.split(",");

              for(var i1 = 0; i1 < tagShowEinzeln.length; i1++) {
               if(highStatus==false){
                  for(var i = 0; i < document.getElementsByName(tagShowEinzeln[i1]).length; i++) {
                  document.getElementsByName(tagShowEinzeln[i1])[i].style.backgroundColor = colorShow;
                  }
               }
               else{
                  for(var i = 0; i < document.getElementsByName(tagShowEinzeln[i1]).length; i++) {
                  document.getElementsByName(tagShowEinzeln[i1])[i].style.backgroundColor = colorShow;
                  }
               }
              }

              if (highStatus) {
                  highStatus = false;
                } else {
                  highStatus = true
                }

              }

              //-->
              </script>

              <a href="#" onclick="HighlightTag('test','#ff0000'); return false;">test1</a>
              <table width="100%">
              <tr id="test">
              <td>test1</td>
              </tr>
              <tr id="test">
              <td>test2</td>
              </tr>
              </table>

              1. Hallo

                if(highStatus==false){
                Warum? Mach es doch andersrum, also "if (highStatus)" und dann entsprechend die Abfrage gestalten. Auf diese Weise sparst du einen Vergelich, auch wenns wohl nicht merkbar ist ;)

                Ein Paar Code-Stellen

                function HighlightTag(tagShow,colorShow) {

                [...]

                document.getElementsByName(tagShowEinzeln[i1])[i].style.backgroundColor = colorShow;

                [...]

                else{

                [...]

                document.getElementsByName(tagShowEinzeln[i1])[i].style.backgroundColor = colorShow;

                [...]

                <a href="#" onclick="HighlightTag('test','#ff0000'); return false;

                Du weist immer Rot als Farbe zu, egal ob die Bedingung nun erfüllt ist oder nicht.

                Grüße

                David

                --
                "Nobody will ever need more than 640k RAM!"
                1981 Bill Gates