So here is what I am trying to do:
My variable named data_1
is set.
var data_1 = {
"y_legend": {
"text": "# of Patients",
"style": "{font-size: 20px; color: #778877}"
},
"x_legend": {
"text": "AUG 09 - OCT 09",
"style": "{font-size: 20px; color: #778877}"
}
};
In a drop down a user selects an option with the value of data_1
that calls load('data_1')
.
function load(data)
{
tmp = findSWF("my_chart");
x = tmp.load( JSON.stringify(data) );
}
My Problem: I'm selecting an option with the value data_1
and not the variable itself.
So in my function load('data_1')
, when I alert(data)
I get data = 'data_1'
.
So how do I get the contents of my variable data_1
in my load function by passing only the name of the string?
What is it you would expect? Variables and functions share the same namespace in JavaScript, so they override each other. if function name and variable name are same then JS Engine ignores the variable.
Naming ConventionsVariable and function names written as camelCase. Global variables written in UPPERCASE (We don't, but it's quite common) Constants (like PI) written in UPPERCASE.
Javascript pass by value:In javascript pass by value, the function is called by directly passing the value of the variable as the argument. Therefore, even changing the argument inside the function doesn't affect the variable passed from outside the function.
var data_1 = { /* data goes here */ };
var data_choices = {1: data_1, 2: data_2, /* and so on */};
var load = function (data) {
// data is "1", "2", etc. If you want to use the full data_1 name, change
// the data_choices object keys.
var tmp = findSWF("my_chart");
var x = tmp.load( JSON.stringify(data_choices[data]) );
}
If it's a global variable, you can reference it with
window['the_variable_name']
E.g.
function load(data)
{
tmp = findSWF( "my_chart" );
x = tmp.load( JSON.stringify( window[data] ) );
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With