Sowieso zie ik een foutje in regel 107, in je onclick scriptje. Je mist een tweede aanhalingsteken. Ook wil je volgens mij de waarde 'window' meegeven, net zoals je dat bij 'formexample' doet, en niet 'onclick'.
Verder zie ik ook dat je helemaal geen 2de parameter aan movewindow meegeeft. Binnen event handler definities in je HTML kun je het event object overigens bereiken via de variabel 'event'. Je kunt hier natuurlijk niet zelf bepalen wat de naam van de variabel wordt, dus standaard is dat dus 'event'. Dit is (waarschijnlijk) waarom IE er zo mee omgaat, en waarom je daar altijd event moet gebruiken.
Ik heb het idee dat ik je nu nog een beetje in het duister laat staan en dat je zo nog niet goed snapt wat er nu gebeurt. Ik zal je met een alternatief proberen duidelijk te maken hoe het ook kan.
Wat je ook kunt doen is je elementen waaraan je een event wilt hangen via DOM ophalen en er zo een functie aan koppelen. Bijvoorbeeld het volgende stukje:
HTML:
1
| <div id="test" onclick="alert(event);">test</div> |
Dit is vrijwel equivalent aan het volgende:
HTML:
1
| <div id="test">test</div> |
Waarbij de volgende script nog uitgevoerd wordt:
JavaScript:
1
2
3
4
5
| var test = document.getElementById('test');
test.onclick = function(event)
{
alert(event);
}; |
Dit is waar voor DOM compliant browsers, maar, omdat IE er anders mee omgaat, is het daar niet hetzelfde voor. In IE is het event object namelijk te bereiken als member van window. Zoals alle variabelen die daaronder hangen, hoef je window zelf niet te specificeren, window.event is dus in de meeste gevallen gelijk aan event. In dit geval is dat echter niet zo, omdat de parameter deze variabel overschaduwd. En aangezien IE helemaal geen waarden mee stuurt via parameters aan de handler, heeft deze dus geen waarde in dit geval. In een handler definitie in je HTML is er voor IE echter geen parameter met deze naam, en wordt hij dus ook niet overschaduwd, je bereikt via 'event' dus altijd het de member van window.
Wat er dan meestal wordt gedaan is de parameter sowieso een andere naam geven, namelijk 'e'. In browsers die het event meesturen als parameter aan de handler kun je dan die waarde gebruiken. In het andere geval overschrijf de waarde met het event object dat onder window hangt. Zo dus:
JavaScript:
1
2
3
4
5
6
| var test = document.getElementById('test');
test.onclick = function(e)
{
e = e || window.event;
alert(e);
}; |
Ik hoop dat het zo iets duidelijker is, je moet even doorkrijgen wat er gebeurt en waar je gegevens vandaan komen. Belangrijk is om je goed in te lezen zodat je het echt goed snapt.
Wees je er overigens van bewust dat wat je nu doet waarschijnlijk niet gaat werken zoals je wil. Een onclick event wordt namelijk maar 1 keer uitgevoerd en ik heb het idee dat je meer in de drag en drop hoek wil zitten. Zoals ik nu kan beoordelen wordt je element gewoon verplaatst naar de plaatst waar je klikt, en verder niets. Beter is om met mousedown en mouseup te werken voor het in werking stellen van het geheel, en dan met mousemove je element te verplaatsten.
[
Voor 10% gewijzigd door
Michali op 06-07-2008 10:52
]