anoniem Geplaatst: 17 augustus 2004 Delen Geplaatst: 17 augustus 2004 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? Quote Link naar reactie
anoniem Geplaatst: 17 augustus 2004 Auteur Delen Geplaatst: 17 augustus 2004 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] Quote Link naar reactie
anoniem Geplaatst: 17 augustus 2004 Auteur Delen Geplaatst: 17 augustus 2004 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] Quote Link naar reactie
anoniem Geplaatst: 17 augustus 2004 Auteur Delen Geplaatst: 17 augustus 2004 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: Quote Link naar reactie
anoniem Geplaatst: 18 augustus 2004 Auteur Delen Geplaatst: 18 augustus 2004 Er is ook nog getElementByName ;) Maar...id's zijn goed :-P Quote Link naar reactie
anoniem Geplaatst: 18 augustus 2004 Auteur Delen Geplaatst: 18 augustus 2004 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] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen