Javascript setAttribute onclick

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 19-09 13:56
Beste mensen.

Ik probeer dynamisch een ul met daarin een aantal li's te maken. In die li's komen links met een onclick attribuut:

code:
1
2
3
4
<ul>
    <li><a href="#" onclick="foto.bekijk(1); return false;">1</a>
    <li><a href="#" onclick="foto.bekijk(2); return false;">2</a>
</ul>


Nu zit ik te testen met de onlick. In Firefox kan ik daar setAttribute voor gebruiken:

JavaScript:
1
2
3
var foto = 'foto'; // Dit even om te illustreren dat ik een functie probeer aan te roepen binnen in een andere functie en dit dus dynamisch is
var ahref = document.createElement('a');
ahref.setAttribute('onclick', foto + '.bekijk('+(a - 1)+')');


Maar IE6 & 7 pakken dat niet. Nu las ik dat ik dit in IE kon gebruiken:

JavaScript:
1
2
var ahref = document.createElement('a');
ahref.onclick = function() { ... }


Ik kan dit alleen niet gebruiken want ik kan hier geen eventhandler van maken. Het moet letterlijk in de a tag komen te staan zoals dit:
<a href="#" onclick="foto.bekijk(1)'">1</a>

Dit omdat ik dus een functie binnen een andere functie probeer te benaderen. Heeft iemand enig idee hoe ik dit kan oplossen?

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 18-09 15:56

pieturp

gaffa!

zie hier ;)
en hier voor een mogelijke scope workaround.

[ Voor 41% gewijzigd door pieturp op 24-02-2010 02:26 . Reden: scope... ]

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Als je met 'iets' ingewikkeldere dingen in javascript gaat werken (zoals events), kan je altijd gebruik maken van frameworks, die het meeste denkwerk voor je doen

(bijv, in jQuery zou dit gewoon $('#idvanlink").bind('click', functienaam); zijn, en die call gaat dan afhankelijk van welke browser het is de juiste call uitvoeren :)

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
ZeroXT schreef op woensdag 24 februari 2010 @ 00:13:
Dit omdat ik dus een functie binnen een andere functie probeer te benaderen. Heeft iemand enig idee hoe ik dit kan oplossen?
Zoals eerder gezegd; gebruik een standaard library zoals jQuery. Hang ook vooral niet aan elk individueel anchor een onclick event handler, maar gebruik event delegation. Zie ook een eerdere post waar een voorbeeld in staat.