Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[JS] Variabele binnen functie gebruiken

None
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

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