[JavaScript]Onthouden of een knop aangeklikt is

Pagina: 1
Acties:

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Ik ben bezig met een scriptje waarin verschillende opmaak knoppen zitten. Met die knoppen kan je dus verschillende opmaakdingen aan en uit zetten, ik gebruik nu alleen nog Bold, Italic en Underlined, maar het is de bedoeling dat er meer mogelijkheden komen.

Nu hebben de knoppen 4 style classes in het style sheet:
1. menu_item_unselected
2. menu_item_unselected_hover
3. menu_item_selected
4. menu_item_selected_hover

Met 3 javascript functies verander ik de classes van de knoppen vervolgens als de muis erover gaat, of als erop geklikt wordt. Dit zijn de functies:

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
var selected = new Array(false, false, false)

function button_hover(button, id){
    if(selected[id] == false){
        button.className = 'menu_item_unselected_hover'
    }else{
        button.className = 'menu_item_selected_hover'
    }   
}

function button_normal(button, id){
    if(selected[id] == false){
        button.className = 'menu_item_unselected'
    }else{
        button.className = 'menu_item_selected'
    }   
}

function button_click(button, id){
    if(selected[id] == false){
        selected[id] = true
        button.className = 'menu_item_selected'
    }else{
        selected[id] = false
        button.className = 'menu_item_unselected'
    }
}


Nu moet er natuurlijk bijgehouden worden welke knoppen zijn ingedrukt ofniet, dus hiervoor gebruik ik de array 'selected'. Echter, ik moet bij iedere knop een 'id' meegeven en dit zijn dus cijfers, eigenlijk vind ik dat niet prettig, omdat je dan al snel het overzicht verliest.

Ik heb onderhand (ook tijdens het typen van deze post) al vanalles geprobeerd, maar het lukt me maar niet om zoiets te maken:

code:
1
2
3
4
5
6
7
8
9
10
11
var selected = new Array()

function button_click(button){
    if(selected[button] == false){
        selected[button] = true
        button.className = 'menu_item_selected'
    }else{
        selected[button] = false
        button.className = 'menu_item_unselected'
    }
}


Ik hoop dat iemand hier een idee heeft. Misschien iets met elementID? Daar heb ik ook al ingekeken, maar dit leek niet te willen.

Overigens roep ik de functie zo aan:
button_click(this, '0') --> voor m'n huidige werkende, maar niet geprefereerde manier;
button_click(this) --> gewenst, OF;
button_click(b)

Research is what I'm doing when I don't know what I'm doing.


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-05 14:56
Je kan de className toch gewoon uitlezen?

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 23:08

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Inderdaad simpelweg de className gebruiken:

code:
1
alert( button.className );


Je functie button_click() is trouwens in een opzicht wat omslachtig: je geeft een button-object mee, en de ID van die button. Waarom niet gewoon ipv een variabele id gewoon button.id gebruiken :?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
djluc schreef op 07 oktober 2004 @ 00:07:
Je kan de className toch gewoon uitlezen?
Damn, tuurlijk, het is zo logisch hè 8)7
Prammenhanger schreef op 07 oktober 2004 @ 00:10:
Je functie button_click() is trouwens in een opzicht wat omslachtig: je geeft een button-object mee, en de ID van die button. Waarom niet gewoon ipv een variabele id gewoon button.id gebruiken :?
Dat was dus omdat ik uit die array de waarde wilde halen (om te kijken of hij geselecteerd was of niet), en daarvoor had ik een key nodig. Ik weet het, dat maakt het niet handig of slim, maar het werkte wel :P

Qua javascript ben ik niet echt heel goed, maar bedankt in ieder geval!

(overigens was het net zelf gelukt met arrays enzo, maar className werkt natuurlijk een stuk handiger!)

edit:
nvm

[ Voor 56% gewijzigd door Roa op 07-10-2004 00:30 ]

Research is what I'm doing when I don't know what I'm doing.