Vraag & Antwoord

Webprogrammeren & scripting

[JS] Variabele binnen functie gebruiken

6 antwoorden
  • 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?
  • 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]
  • 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]
  • Bedankt! :P Komt vast nog eens van pas in de toekomst. Nu gebruik ik toch het object script, omdat ik daarbij zonder id's kan werken. :wink:
  • Er is ook nog getElementByName ;) Maar...id's zijn goed :-P
  • 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]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.