Ga naar inhoud

[JS] Variabele binnen functie gebruiken


anoniem

Aanbevolen berichten

Ik ben bezig met een simpele smilie functie, die ik gebruik om smilies in willekeurige velden toe te voegen aan de tekst in dat veld. Nu lukt het wel als ik de veldnaam vast zet in de functie, maar zodra ik die variabel wil hebben gaat het mis. Dit werkt: [code:1:a5181e8487]<!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.01 Transitional//EN"> <html> <head> <script language="JavaScript" type="text/javascript"> <!-- function smilie(code) { document.form.bericht.value = document.form.bericht.value + ' ' + code; document.form.bericht.focus(); } //--> </script> </head> <body> <form name="form"> <textarea name="bericht" rows="4" cols="35" wrap="virtual">bla</textarea> </form> <a href="#" onClick="smilie(':?')">klik!</a> </body> </html>[/code:1:a5181e8487] Dit niet: [code:1:a5181e8487]<!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.01 Transitional//EN"> <html> <head> <script language="JavaScript" type="text/javascript"> <!-- function smilie(code,veld) { document.form.veld.value = document.form.veld.value + ' ' + code; document.form.veld.focus(); } //--> </script> </head> <body> <form name="form"> <textarea name="bericht" rows="4" cols="35" wrap="virtual">bla</textarea> </form> <a href="#" onClick="smilie(':?', 'bericht')">klik!</a> </body> </html>[/code:1:a5181e8487] Hierbij krijg ik de volgende JS error: [code:1:a5181e8487]Error: document.form.veld has no properties Source File: file:///E:/(..)/test.html Line: 10[/code:1:a5181e8487] Wat moet ik aan de functie in de onderste code veranderen, zodat hij de variabele "veld" ook echt als variabele gebruikt?
Link naar reactie
Ik heb zojuist de oplossing gekregen van een vriend van me! ;) [code:1:5aef869de4]<!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.01 Transitional//EN"> <html> <head> <script language="JavaScript" type="text/javascript"> <!-- function smilie(code,veld) { var obj=veld; document.form[obj.name].value = document.form[obj.name].value + " " + code; document.form[obj.name].focus(); } //--> </script> </head> <body> <form name="form"> <textarea name="bericht" rows="4" cols="35" wrap="virtual">bla</textarea> </form> <a href="#" onClick="smilie(':?', document.form.bericht);">klik!</a> </body> </html>[/code:1:5aef869de4]
Link naar reactie
Hier een versimpelde versie mbv DOM (document object model): [code:1:63969210bb] <!DOCTYPE html PUBLIC "-//W3C//Dtd html 4.01 Transitional//EN"> <html> <head> <script language="JavaScript" type="text/javascript"> <!-- function smilie(code, veld) { var t = document.getElementById(veld); t.value += ' ' + code; t.focus(); } //--> </script> </head> <body> <form name="form" id="forma"> <textarea name="bericht" id="tekst" rows="4" cols="35" wrap="virtual">bla</textarea> </form> <a href="#" onClick="smilie(':?', 'tekst');">klik!</a> </body> </html> [/code:1:63969210bb]
Link naar reactie
Als je dan voor de object verwijzing kiest dan lijkt het mij logischer als je iets als onderstaande doet: [code:1:a69b89c88e] <script type="text/javascript"> function smilie(code, veld) { veld.value += " " + code; veld.focus(); } </script> [/code:1:a69b89c88e] Je hebt immers al een verwijzing naar het object en die extra look-up in de form collection is dus nergens voor nodig. Daarnaast zou je nog kunnen overwegen om de aanroep wat vollediger te maken: [code:1:a69b89c88e] <a href="#" onclick="smilie(':?', document.forms['form'].elements['bericht']);return false;">klik!</a> [/code:1:a69b89c88e]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...