tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
26
ZUGRIFFE
2808
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Maik Tutorials.de Gastzugang
    Dann markiere das Thema bitte auch als erledigt, indem du auf den "Status"-Button rechts vom "Antworten"-Button klickst.
     

  2. #17
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hab den Preloader mal in das Skript eingebaut...das spart nen Haufen Schreibkram und die Gefahr von Tippfehlern wird erheblich reduziert
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    <script type="text/javascript">
    <!--
    clicked=false;
    function btn_init()
    {
      pattern=/(normal|hover|active)\./i;
      btns = document.getElementsByName('btn');
      tmp=[];
      for(b=0;b<btns.length;++b)
        {
          tmp[b]=[new Image(),new Image()];
          tmp[b][0].src=btns[b].src.replace(pattern,'hover.');
          tmp[b][1].src=btns[b].src.replace(pattern,'active.');
          btns[b].onmouseover=function()
            {
              if(clicked!=this)
                {
                  this.src=this.src.replace(pattern,'hover.');
                }
            }
          btns[b].onmouseout=function()
            {
              if(clicked!=this)
                {
                  this.src=this.src.replace(pattern,'normal.');
                }
            }
          btns[b].onclick=function()
            {
                  if(clicked)
                    {
                      clicked.src = clicked.src.replace(pattern,'normal.');
                    }
                  this.src=this.src.replace(pattern,'active.');
                  clicked=this;
            }
        }
    }
    window.onload = btn_init;
    //-->
    </script>
     

  3. #18
    kastalonien kastalonien ist offline Mitglied Bronze
    Registriert seit
    Jun 2006
    Beiträge
    45
    Hab' da nochmal ne Frage...

    Kann man das obrige Script auch so umschreiben, dass es statt Grafiken mit im CSS definierten Text funktioniert (a:active, a:hover...u.s.w.) ?

    thx für Antworten...
     

  4. #19
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Was für definierter Text?
    CSS ist für das Layout zuständig und nicht für den Inhalt(Text).
     

  5. #20
    kastalonien kastalonien ist offline Mitglied Bronze
    Registriert seit
    Jun 2006
    Beiträge
    45
    ja, ich meine einen Text, den ich mit CSS gelayouted habe...
     

  6. #21
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Jo..kann man, .... ändere den className des betreffenden Elementes statt der src des Bildes. Dann definiere noch die entsprechenden Klassen, fertitsch.
     

  7. #22
    kastalonien kastalonien ist offline Mitglied Bronze
    Registriert seit
    Jun 2006
    Beiträge
    45
    ...ändere den className des betreffenden Elementes statt der src des Bildes...

    Wie mache ich dass
     

  8. #23
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Code :
    1
    
    document.getElementById('idDesElements').className='andererKlassenname';

    Dieses Board besitzt übrigens auch eine Suchfunktion.
    Abgesehen davon gehört das Ändern von Element-Attributen zum kleinen JS-1x1, da solltest du dich mal ein wenig einlesen.
     

  9. #24
    Ecstasy Ecstasy ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    2
    Ich weiß, der Thread ist Ur-Alt.

    Allerdings bräuchte ich dieses Script an 2 verschiedenen stellen. Problem hierbei ist, wenn in meiner Horizontalen Navigation ein Element angeklickt ist und er als "active" angezeigt wird und ich im anderen Menue auf ein Element klicke wird das Element in der Horizontalen Navigation auf Normal geswitcht.

    Wie bekomme ich das in Griff? Die Funktion ein zweites mal einbinden und alles was btn heißt ,umbenennen, funktioniert nicht. Dann funktioniert nur eine der beiden Funktionen.

    Vielen Dank im voraus!

    Grüße
    Sascha
     

  10. #25
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    du könntest eine Art Pseudo-Objekt erstellen, in dem die Variablen lokal definiert sind. Als Parameter übergibst du die ID des jeweiligen Menüs.

    Ein Beispiel mit CSS-Klassen für die unterschiedlichen Zustände:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <style type="text/css">
    <!--
    #nav01 .normal,
    #nav02 .normal{
      color: #f00;
    }
     
    #nav01 .active,
    #nav02 .active{
      color: #00f;
    }
     
    #nav01 .hover,
    #nav02 .hover{
      color: #0f0;
    }
    -->
    </style>
    <script type="text/javascript">
      <!--
    function qpMenu(options){
      var menu = {
        pattern: /(normal|hover|active)/i
      };
     
      for(var key in options)
        menu[key] = options[key];
     
      menu.btns = (menu.id===undefined)? document.getElementsByTagName("body")[0].getElementsByTagName("button")
                                       : document.getElementById(menu.id).getElementsByTagName("button");
     
      for(var b=0, bLen=menu.btns.length; b<bLen; b++){
        menu.btns[b].onmouseover = function(){
          if(menu.clicked != this){
            this.className = this.className.replace(menu.pattern, 'hover');
          }
        };
     
        menu.btns[b].onmouseout = function(){
          if(menu.clicked != this){
            this.className = this.className.replace(menu.pattern, 'normal');
          }
        };
     
        menu.btns[b].onclick = function(){
          if(menu.clicked){
            menu.clicked.className = menu.clicked.className.replace(menu.pattern, 'normal');
          }
          this.className = this.className.replace(menu.pattern, 'active');
          menu.clicked = this;
        };
      }
    }
     
    window.onload = function(){
      qpMenu({
        id: 'nav01'
      });
      qpMenu({
        id: 'nav02'
      });
    }
     //-->
    </script>
    </head>
    <body>
    <div id="nav01">
      <button class="normal">eins</button>
      <button class="normal">zwei</button>
      <button class="normal">drei</button>
    </div>
    <div id="nav02">
      <button class="normal">eins</button>
      <button class="normal">zwei</button>
      <button class="normal">drei</button>
    </div>
    </body>
    </html>
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  11. #26
    Ecstasy Ecstasy ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    2
    Funktioniert soweit super! Danke dir.

    Nur mein Problem ist, dass auch jetzt alle Divs im "Normalzustand" sind. Ich möchte das erste Element gerne direkt beim Laden der Page als "active" haben.

    Gibt es da eine Möglichkeit?

    Grüße und Vielen Dank!
    Sascha

    EDIT:

    Ich merke gerade das Problem, dass ich nur diverse Farben ändern kann. Ich habe aber für jeden Button ein anderes Hintergrundbild sowie andere Abmaße. Sprich ich kann nicht alles in "navi01" packen. Wenn ich alles trenne um meine Bilder zu haben, taucht ein Problem auf. Sobald ich den zweiten Button klicke um ihn auf "active" zu schalten, bleibt der erste weiterhin active.
    Geändert von Ecstasy (08.02.12 um 17:04 Uhr)
     

  12. #27
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    um unterschiedliche Eigenschaften zuzuweisen, sollte CSS ausreichen. Es müssen die MenuItems nur mit den gewünschten Klassen versehen werden.

    Um bestimmte MenuPunkte programmatisch aktiv setzen zu können, kann eine entsprechende öffentliche (public) Methode zur Verfügung gestellt werden. Diese nimmt den Index des Punktes entgegen, der angewählt sein soll und setzt den notwendigen Zustand.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <style type="text/css">
    <!--
    #nav01 .normal{
      color: #f00;
    }
    #nav01 .active{
      color: #0f0;
    }
    #nav01 .hover{
      color: #00f;
    }
     
     
    #nav02 .eins,
    #nav02 .zwei,
    #nav02 .drei{
        border: 1px solid #000;
    }
     
    #nav02 .eins{
      width: 50px;
      height: 20px;
    }
    #nav02 .zwei{
      width: 60px;
      height: 30px;
    }
    #nav02 .drei{
      width: 40px;
      height: 40px;
    }
     
    #nav02 .eins.normal{
      color: #f00;
      background: url(bild1.png) 0 0 no-repeat;
    }
    #nav02 .zwei.normal{
      color: #0f0;
      background: url(bild2.png) 0 0 no-repeat;
    }
    #nav02 .drei.normal{
      color: #00f;
      background: url(bild3.png) 0 0 no-repeat;
    }
     
    #nav02 .eins.active{
      color: #000;
      background: url(bild1_active.png) 0 0 no-repeat;
    }
    #nav02 .zwei.active{
      color: #0cf;
      background: url(bild2_active.png) 0 0 no-repeat;
    }
    #nav02 .drei.active{
      color: #fc0;
      background: url(bild3_active.png) 0 0 no-repeat;
    }
     
    #nav02 .eins.hover{
      color: #cc0;
      background: url(bild1_hover.png) 0 0 no-repeat;
    }
    #nav02 .zwei.hover{
      color: #c0c;
      background: url(bild2_hover.png) 0 0 no-repeat;
    }
    #nav02 .drei.hover{
      color: #0cc;
      background: url(bild3_hover.png) 0 0 no-repeat;
    }
    -->
    </style>
    <script type="text/javascript">
      <!--
    function qpMenu(options){
      var menu = {
        pattern: /(normal|hover|active)/i,
        tag: 'button'
      };
     
      for(var key in options)
        menu[key] = options[key];
     
      menu.btns = (menu.id===undefined)? document.getElementsByTagName("body")[0].getElementsByTagName(menu.tag)
                                       : document.getElementById(menu.id).getElementsByTagName(menu.tag);
     
      for(var b=0, bLen=menu.btns.length; b<bLen; b++){
        menu.btns[b].onmouseover = function(){
          if(menu.clicked != this){
            this.className = this.className.replace(menu.pattern, 'hover');
          }
        };
     
        menu.btns[b].onmouseout = function(){
          if(menu.clicked != this){
            this.className = this.className.replace(menu.pattern, 'normal');
          }
        };
     
        menu.btns[b].onclick = function(){
          _setActive(this);
        };
      }
      
      // private
      var _setActive = function(menuItem){
        if(menu.clicked){
          menu.clicked.className = menu.clicked.className.replace(menu.pattern, 'normal');
        }
        menuItem.className = menuItem.className.replace(menu.pattern, 'active');
        menu.clicked = menuItem;
      }
      
      // public
      menu.setActive = function(index){
        _setActive(menu.btns[index]);
        return menu;
      }
      
      return menu;
    }
     
    window.onload = function(){
      qpMenu({
        id: 'nav01',
        tag: 'button'
      });
      qpMenu({
        id: 'nav02',
        tag: 'div'
      }).setActive(0);
    }
     //-->
    </script>
    </head>
    <body>
    <div id="nav01">
      <button class="normal">eins</button>
      <button class="normal">zwei</button>
      <button class="normal">drei</button>
    </div>
    <div id="nav02">
      <div class="eins normal">eins</div>
      <div class="zwei normal">zwei</div>
      <div class="drei normal">drei</div>
    </div>
    </body>
    </html>
    Das Script wurde auch dahin gehend erweitert, dass der Pseudoklasse der Tag-Name der MenuPunkte übergeben werden kann.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. Javascript/CSS Button Menü Creator
    Von PhoenixDH im Forum HTML-Editoren
    Antworten: 3
    Letzter Beitrag: 24.11.08, 19:27
  2. Pull Down Menü Auswahl und Button verknüpfen
    Von Makunta im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 24.04.06, 17:01
  3. Bei klick auf Button test/menü ausfahren
    Von Jukkales im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 26.05.05, 18:22
  4. Button mit Menü
    Von C-H im Forum .NET Archiv
    Antworten: 4
    Letzter Beitrag: 18.04.05, 14:40
  5. MENÜ Button mit mehreren Buttons !?
    Von babone im Forum Flash Plattform
    Antworten: 24
    Letzter Beitrag: 03.04.03, 20:46