Question for beginners: Variable en Javascript

advertisements

I'm new to javascript and cant get this little thing to work. (all external scripts a of course loaded)

I have this jQuery script:

$('a.Link').click(function(){
    autoComp('City');
});

function autoComp(strFormName) {
    var Company = 'Adobe Apple Microsoft'.split(" ");
    var City = 'London Paris Berlin'.split(" ");
    $('#'+strFormName).autocomplete(strFormName)
}

I cant get it to work. I've discovered that the problem is the last "strFormName" after .autocomplete

Appreciate all the help I can get.


You're passing the actual value of strFormName into the autocompleter. You probably wanted to do this instead:

function autoComp(strFormName) {
    var data = {
        Company: 'Adobe Apple Microsoft'.split(" "),
        City:    'London Paris Berlin'.split(" ")
    };
    $('#'+strFormName).autocomplete(data[strFormName]);
}

What that does is create an object (data) with two properties, City and Company. Then, when passing the array to the autocompleter, it selects the appropriate array by looking up the property by name, using [] syntax.

JavaScript is very flexible about how you access properties. For example, all of these retrieve the City property of data:

var x = data.City;
var x = data['City'];
var y = "City"; var x = data[y];
var x = data["C" + 'i' + "t" + 'y'];

You get the idea, you can either access a property by using its name literally in the code, or by indexing into the object with [] and giving the property as a string (which can be a string literal, or a string coming from a variable, or expression, or function result, or...).

I'd probably move the data stuff out of autoComp because you don't need to recreate it every time.