-
02.06.06 18:01 #16Maik Tutorials.de Gastzugang
Dann markiere das Thema bitte auch als erledigt, indem du auf den "Status"-Button rechts vom "Antworten"-Button klickst.
-
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>
-
08.06.06 16:12 #18
- 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...
-
Was für definierter Text?
CSS ist für das Layout zuständig und nicht für den Inhalt(Text).
-
08.06.06 20:01 #20
- Registriert seit
- Jun 2006
- Beiträge
- 45
ja, ich meine einen Text, den ich mit CSS gelayouted habe...
-
Jo..kann man, .... ändere den className des betreffenden Elementes statt der src des Bildes. Dann definiere noch die entsprechenden Klassen, fertitsch.
-
10.06.06 15:06 #22
- Registriert seit
- Jun 2006
- Beiträge
- 45
...ändere den className des betreffenden Elementes statt der src des Bildes...
Wie mache ich dass
-
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.
-
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
-
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:
CiaoCode :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>
QuaeseVielleicht 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
-
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)
-
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:
Das Script wurde auch dahin gehend erweitert, dass der Pseudoklasse der Tag-Name der MenuPunkte übergeben werden kann.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>
Ciao
QuaeseVielleicht 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
-
Javascript/CSS Button Menü Creator
Von PhoenixDH im Forum HTML-EditorenAntworten: 3Letzter Beitrag: 24.11.08, 19:27 -
Pull Down Menü Auswahl und Button verknüpfen
Von Makunta im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 24.04.06, 17:01 -
Bei klick auf Button test/menü ausfahren
Von Jukkales im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 26.05.05, 18:22 -
Button mit Menü
Von C-H im Forum .NET ArchivAntworten: 4Letzter Beitrag: 18.04.05, 14:40 -
MENÜ Button mit mehreren Buttons !?
Von babone im Forum Flash PlattformAntworten: 24Letzter Beitrag: 03.04.03, 20:46



1Danke

Zitieren

Login





