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

een var buiten een functie

Anoniem
Annie
7 antwoorden
  • Uit de volgende functie wil ik bitrate_lijst ook buiten de functie kunnen gebruiken.
    [code:1:62ccbabeee]
    function BitrateChange(bitrate)
    {
    var bitrate_lijst = document.getElementById('bitrate');
    }
    [/code:1:62ccbabeee]

    Hoe doe ik dit? Iets van:
    [code:1:62ccbabeee]
    var show = (BitrateChange(bitrate_lijst));
    document.write(show);
    [/code:1:62ccbabeee]
  • de var bitrate_lijst niet in de functie pas te definieren maar zo:
    [code:1:dd61ed1f88]
    <script>
    var bitrate_lijst
    function BitrateChange(bitrate)
    {
    bitrate_lijst = document.getElementById('bitrate');
    }
    </script>[/code:1:dd61ed1f88] volgens my moet het zo kunnen
  • [quote:431f15e4e7="Hend"]de var bitrate_lijst niet in de functie pas te definieren maar zo:
    [code:1:431f15e4e7]
    <script>
    var bitrate_lijst
    function BitrateChange(bitrate)
    {
    bitrate_lijst = document.getElementById('bitrate');
    }
    </script>[/code:1:431f15e4e7] volgens my moet het zo kunnen[/quote:431f15e4e7]
    Dat is natuurlijk heel erg evil ;)

    Een nette oplossing is de functie de waarde te laten retourneren.

    [code:1:431f15e4e7]
    function BitrateChange(bitrate)
    {
    var bitrate_lijst = document.getElementById('bitrate');
    return bitrate_lijst;
    }

    var show = BitrateChange(bitrate_lijst);
    document.write(show);
    [/code:1:431f15e4e7]

    Overigens is me niet helemaal duidelijk wat de parameter van de functie moet voorstellen. Deze doet in het voorbeeld namelijk helemaal niets.
  • @annie: dat werkt bij mij niet. Kent javascript misschien ook iets als globals, net als php?

    Het is overigens een stukje van een script, ik heb het een beetje aangepast, om het overzichtelijk te houden. Maar alles werkt verder goed, dus daar ligt het niet aan. Als ik in de functie alert(bitratelijst) zet, dan krijg ik alle info die ik nodig heb. Nu is het de vraag hoe ik hem dus ook buiten die functie over die gegevens kan beschikken. :)
  • Het gaat om de volgende functie:
    [code:1:dc8971b54b]
    function BitrateChange(bitrate)
    {
    var bitrate_lijst = document.getElementById('bitrate');
    var bitrate = bitrate.options[bitrate.selectedIndex].value;
    var test = ('get', 'search.php?zoek_bit='+bitrate);
    return test;
    }
    [/code:1:dc8971b54b]
    Als ik de waarde van test controleer met "alert(test)" dan krijg ik de goede waarde te zien. Maar hoe kan ik deze ook buiten de functie gebruiken?
  • [quote:caec070d0a="yolk2003"]@annie: dat werkt bij mij niet. Kent javascript misschien ook iets als globals, net als php?
    [/quote:caec070d0a]
    Javascript kent inderdaad een local en een global variable space. het voorbeeldje van Hend gaat uit van de global space, maar ik vind dat persoonlijk geen mooie oplossing.

    Je kan variabelen global maken door ze buiten een functie te declareren of door het keyword 'var' weg te laten binnen een functie. Een tweetal voorbeeldjes ter verduidelijking van dit principe:
    [code:1:caec070d0a]
    <script type="text/javascript">
    var foo = '?'; // global

    function testje()
    {
    foo = 'bar'; // global
    bar = 'foo'; // global
    }

    testje();
    document.write (foo); // geeft 'bar'
    document.write (bar); // geeft 'foo'
    </script>
    [/code:1:caec070d0a]
    En
    [code:1:caec070d0a]
    <script type="text/javascript">
    var foo = '?'; // global

    function testje()
    {
    var foo = 'bar'; // local
    var bar = 'foo'; // local
    }

    testje();
    document.write (foo); // geeft '?'
    document.write (bar); // geeft foutmelding
    </script>
    [/code:1:caec070d0a]

    Variabelen in de global space worden overigens properties van het Window object. Dus het volgende werkt ook:
    [code:1:caec070d0a]
    <script type="text/javascript">
    var foo = '?'; // global

    function testje()
    {
    foo = 'bar'; // global
    bar = 'foo'; // global
    }

    testje();
    document.write (window['foo']); // geeft 'bar'
    document.write (window.bar); // geeft 'foo'
    </script>
    [/code:1:caec070d0a]
    Niet dat je dit vaak zal gebruiken, maar misschien kan je er ooit wat mee.
  • Bedankt voor je uitleg Annie. Ik snap het nu wat beter. Maar ik krijg nog niet voor mekaar wat ik wil. Ik krijg de volgende melding:
    [quote:562faddefd]
    Waarschuwing Door ID/NAME in de globale scope gerefereerd element. Gebruik in plaats daarvan document.getElementById(), volgens de W3C-standaard.
    Bronbestand test.php Regel 119
    [/quote:562faddefd]

    Dit is wat ik nu in de head heb:
    [code:1:562faddefd]
    var test = '?'; // global
    function BitrateChange(bitrate)
    {
    var bitrate_lijst = document.getElementById('bitrate');
    var bitrate = bitrate.options[bitrate.selectedIndex].value;
    var test = ('get', 'search.php?zoek_bit='+bitrate);
    }
    [/code:1:562faddefd]
    en dit heb ik in de body:
    [code:1:562faddefd]
    BitrateChange(bitrate);
    document.write(test);
    [/code:1:562faddefd]

Beantwoord deze vraag

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