Ben bezig met een script voor de events van knoppen. De replace() functie doet raar, waarschijnlijk snap ik nog niet helemaal hoe ie werkt (als PHPer).
De string wordt telkens wel gevonden, maar telkens ook niét vervangen door de replace(); (zie regel 11)
Zonder gebruik van replace() werkt ie natuurlijk wel, maar dan verlies ik een hoop mogelijkheden...
Kan iemand mij misschien vertellen wat ik hier fout doe?
[edit] De regex moet trouwens matchen op ' hold', belangrijk is dus dat de spatie (of meerdere) die vòòr 'hold' staan ook meegenomen worden!
Alvast bedankt!
De string wordt telkens wel gevonden, maar telkens ook niét vervangen door de replace(); (zie regel 11)
JavaScript:
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
| var hold_button = document.getElementById('hold_button'); if (hold_button != null) { hold_button.onclick = function() { // replace image var dir = 'styles/xp/img/'; var img = this.getElementsByTagName( 'img' ).item(0); if (this.className.indexOf(' hold') != -1) { img.src = dir + 'hold.gif'; } else { img.src = dir + 'hold_down.gif'; } // give proper class //if (this.className.indexOf(' hold') != -1) { this.className = 'toolbar_button' } else { this.className += ' hold'; } var regex = new RegExp(' hold', 'g'); if (this.className.indexOf(' hold') != -1) { this.className.replace(regex, ''); } else { this.className += ' hold'; } } hold_button.onmouseover = function() { if (this.className.indexOf(' hover') == -1) { this.className += ' hover'; } } hold_button.onmouseup = function() { if (this.className.indexOf(' hover') == -1) { this.className += ' hover'; } if (this.className.indexOf(' down') != -1) { this.className.replace(' down', ''); } } hold_button.onmouseout = function() { if (this.className.indexOf(' hover') != -1) { this.className.replace(' hover', ''); } if (this.className.indexOf(' down') != -1) { this.className.replace(' down', ''); } } hold_button.onmousedown = function() { if (this.className.indexOf(' hover') != -1) { this.className.replace(' hover', ''); } if (this.className.indexOf(' down') == -1) { this.className += ' down'; } } } |
Zonder gebruik van replace() werkt ie natuurlijk wel, maar dan verlies ik een hoop mogelijkheden...
Kan iemand mij misschien vertellen wat ik hier fout doe?
[edit] De regex moet trouwens matchen op ' hold', belangrijk is dus dat de spatie (of meerdere) die vòòr 'hold' staan ook meegenomen worden!
Alvast bedankt!
[ Voor 26% gewijzigd door Verwijderd op 08-07-2005 17:27 ]