PDA

Volledige versie bekijken : [Javascript] Events toekennen in de code.


josko
%Europe/Berlin %624 %2007, 14:58
Hoihoi,
in mijn projectje maak ik objecten aan in de code.

Nu zit ik echter met een probleem.

een div moet bij onclick het event doorsturen, waaruit je de clientX en clientY voor de muis kunt halen, maar ook zichzelf óf zijn Id.

Nu lijkt een toewijzing van een event in de code maar op twee manieren te werken:
object.onclick= function()
{
}
object.onclick= myFunction;
Wat ik normaal zou hebben is bijvoorbeeld:

<div onclick="javascript: myFunction( event ) ;">
dude?
</div>
Dus ik verwachtte als code dit:
object.onclick= 'javascript: myFunction( event )';

Daarop krijg ik echter geen reactie.

De code nu:
function addMenuItem( url, x, y, tumb, number )
{
var menuItem = document.createElement('img');
menuItem.style.border = "0px";
if( parseInt( x ) > 100 | parseInt( y ) > 100 )
{
menuItem.src = tumb;
}
else
{
menuItem.src = url;

menuItem.style.left = "50%";
menuItem.marginLeft = '-' + Math.round( x/2 );
menuItem.position = "relative";
}

var itemHolder = document.createElement( 'div' );
itemHolder.style.marginTop = "10px";
itemHolder.style.width = "100px";
itemHolder.style.height = "100px";
itemHolder.style.border = "1px solid gray";
itemHolder.style.backgroundColor = "rgb( 255,255,224 )";
itemHolder.id = "tumb-(" + number + ")";
itemHolder.onclick = "createWidget( event) ";

var urlHolder = document.createElement( 'input' );
urlHolder.type = "hidden";
urlHolder.name = "url";
urlHolder.value = url;

itemHolder.appendChild( menuItem );
itemHolder.appendChild( urlHolder );

menu.appendChild( itemHolder );

}
function createWidget( number, event)
{
trowError('created!' + number + ', mouse: ' + event.clientX);
}

En er moet dus worden meegegeven: Event, this
óf event, number, waarin number zich nu in de aanmaak functie begint.

ik kom er niet uit op het moment. iemand? 8)

BernardV
%Europe/Berlin %630 %2007, 15:08
Hier staat wel wat info:
http://www.terrainformatica.com/index.php/?p=9

mknol
%Europe/Berlin %635 %2007, 15:14
itemHolder.onclick = createWidget(event) ;
volgens moet het zonder quotes?

BernardV
%Europe/Berlin %660 %2007, 15:51
itemHolder.onclick = createWidget(event) ;
volgens moet het zonder quotes?

Zo gaat het helaas niet werken, nu zou je de returnwaarde van de functie plaatsen in de onclick.

josko
%Europe/Berlin %801 %2007, 19:14
Hier staat wel wat info:
http://www.terrainformatica.com/index.php/?p=9
Eerlijk gezegd: Niet te volgen :#

Er staat wel wat info, maar niet bepaald duidelijk... :(

Zou jij het me uit kunnen leggen?
En, hoe zou ik (event) eraan toe voegen?

TheDutch
%Europe/Berlin %702 %2007, 16:51
Bij een event moet je altijd "javascript:" weglaten. Het "javascript:" is alleen van toepassing bij een URL dus in een HREF :).

josko
%Europe/Berlin %743 %2007, 17:50
Hehe kaj :)

Ik heb het ondertussen gevonden, het is gewoon bernardV zijn oplossing.
T was een beetje moeilijk te volgen vond ik, maar toch :)

@TheDutch goed om te weten :) Ik had me aangeleerd het er altijd voor te zetten.. :P

De oplossing:

object.onclick = getEvent( id );

function getEvent( id )
{
return function( myEvent )
{
alert( document.getElementById( id ).value );
}
}


Ofwel, een delegate in javascript :)