views:

168

answers:

3

I'm trying to pass two parameters to a JavaScript function. Unfortunately this give me error.

Here is the function

    function load(do,div)
    {
        var do;
        var div;
        document.getElementById('spinner').innerHTML = '<img src=\'/images/spinner.gif\'>';
        $('#'+div).load('rpc.php?'+do,
        function()
        {
            document.getElementById('spinner').innerHTML = '';
            $('#'+div).show('slow');
        }
    }

And I call it like this:

    <a href="javascript:;" onclick="load('limit','mydiv');">Get Limit</a>

How can I fix that?

+11  A: 

do is a reserved word in JavaScript. Change the variable name to something else. Additionally, don't re-declare the arguments in the function body. So remove the 2 var lines from the top of your function body.

If you're curious what the do keyword is for, it's for do...while loops where the condition is evaluated at the end, not the beginning of the loop. It's used something like this:

do {
    // do stuff in loop at least once
} while (some_condition_is_true);

For more info check out W3Schools.

Asaph
... and remove the two declarations which are the overriding the arguments.
BalusC
@BalusC: Thanks. Good point. I updated my answer.
Asaph
thanks this fixed the error
streetparade
re-declaring variables with same argument name, doesn't effect the arguments.
Luca Matteis
@Luca Matteis: Interesting. I didn't know that. Even so, it's unconventional enough that I still advise removing those lines.
Asaph
Interesting. This is a-logical.
BalusC
@BalusC: What exactly is a-logical? The fact that re-declaring variables has no effect, or my decision to leave the recommendation to remove the re-declaration in my answer despite knowing the former?
Asaph
+2  A: 

do is a reserved word in JavaScript.

http://javascript.about.com/library/blreserved.htm

gahooa
+1  A: 

Is it because you are redefining do div again in function and they are overriding the scope of passed parameters?

dhaval