Hello!
Is there a way to find JavaScript variable on the page (get it as an object) by its name? Variable name is available as a string constant.
Hello!
Is there a way to find JavaScript variable on the page (get it as an object) by its name? Variable name is available as a string constant.
Javascript variables aren't "on the page", like DOM elements. You can access them only if they are available from your scope.
What are you trying to do?
<script>
var a ="test";
alert(a);
alert(window["a"]);
alert(eval("a"));
</script>
All JS objects (which variables are) are available within their scope as named properties of their parent object. Where no explicit parent exists, it is implicitly the window
object.
i.e.:
var x = 'abc';
alert(window['x']); //displays 'abc'
and for a complex object:
var x = {y:'abc'};
alert(x['y']); //displays 'abc'
and this can be chained:
var x = {y:'abc'};
alert(window['x']['y']); //displays 'abc'
If your string references a 'deep' property of a global, like 'Yankee.console.format' you can step through the references:
String.prototype.deref= function(){
// remove leading and trailing quotes and spaces
var obj= this.replace(/(^[' "]+|[" ']+$)/g,'');
var M= obj.match(/(^[\w\$]+(\.[\w\$]+)*)/);
if(M){
M= M[1].split('.');
obj= window[M.shift()];
while(obj && M.length) obj= obj[M.shift()];
}
return obj || this;
}
If you are wanting a variable that is declared in the global context, it is attached to the window object. ex: window["variableName"]. All variables are a hash table value within their scope.
If you have to use dotted notation, then you will want to follow kennebec's suggestion, to navigate through the object hierarchy. eval() can work as well, but is a more expensive operation than is probably needed.