for loop - Iterating over variables in Javascript - Stack Overflow

My goal with block 2 is to streamline my existing block 1 code by defining javascript variables in a fo

My goal with block 2 is to streamline my existing block 1 code by defining javascript variables in a for loop.The code below is giving me the error "Unexpected token [" in the console. I am not sure I am using the proper syntax here. Is there a way to loop over an array and insert each dynamically to get the desired result of block 1?

I am able to console.log details_object[i] in block 2 and successfully see all the array elements but that is about as far as I can get.

   /*Block 1*/

   /*var title = document.getElementById('title').value;
   var phone = document.getElementById('phone').value;
   var firstn = document.getElementById('firstn').value;
   var lastn = document.getElementById('lastn').value;
   var displayn = document.getElementById('displayn').value;*/

   /*Block 2 less code!*/

   var details_object = ["title", "phone", "firstn", "lastn", "displayn"];

   for(var i=0, l = details_object.length; i < l; i++){
     var details_object[i] = document.getElementById("'"+details_object[i]+"'").value;
   }

My goal with block 2 is to streamline my existing block 1 code by defining javascript variables in a for loop.The code below is giving me the error "Unexpected token [" in the console. I am not sure I am using the proper syntax here. Is there a way to loop over an array and insert each dynamically to get the desired result of block 1?

I am able to console.log details_object[i] in block 2 and successfully see all the array elements but that is about as far as I can get.

   /*Block 1*/

   /*var title = document.getElementById('title').value;
   var phone = document.getElementById('phone').value;
   var firstn = document.getElementById('firstn').value;
   var lastn = document.getElementById('lastn').value;
   var displayn = document.getElementById('displayn').value;*/

   /*Block 2 less code!*/

   var details_object = ["title", "phone", "firstn", "lastn", "displayn"];

   for(var i=0, l = details_object.length; i < l; i++){
     var details_object[i] = document.getElementById("'"+details_object[i]+"'").value;
   }
Share Improve this question asked Jan 24, 2014 at 1:47 Rob MRob M 1211 gold badge2 silver badges13 bronze badges 1
  • you dont need the "'" parts in the function call, each of the array elements are already strings. – Patrick Evans Commented Jan 24, 2014 at 1:49
Add a ment  | 

4 Answers 4

Reset to default 1
var details_object[i] = document.getElementById("'"+details_object[i]+"'").value;
 ^---// Delete this var

That is what was causing the error. You probably want something like this:

var details_object = ["title", "phone", "firstn", "lastn", "displayn"];
var obj = {};

for(var i=0, l = details_object.length; i < l; i++){
  obj[details_object[i]] = document.getElementById(details_object[i]).value;
}

Now access obj.title, obj.phone, etc.

Try

var scope = this;
for(var i=0, l = details_object.length; i < l; i++){
     scope[details_object[i]] = document.getElementById(details_object[i]).value;
}

this will create a variable named with the name stored in details_object[i] into the current scope. Hopefully you are not doing this on the global scope as this will pollute it.

Try this

var details_object = ["title", "phone", "firstn", "lastn", "displayn"];
for(var i=0, l = details_object.length; i < l; i++){
     window[details_object[i]] = document.getElementById("'"+details_object[i]+"'").value;
   }

My goal with block 2 is to streamline my existing block 1 code by defining javascript variables in a for loop

You can only do that with eval or with properties of the global object (which is the window object in a browser). Javascript does not allow access to a local variable object, so you can't directly address its properties. You can only access them using an identifier name that is first resolved in the current execution context (more or less on a local variable object) and then on the scope chain which has the variables of outer execution contexts if there are any.

The exception is that global variables are made properties of the global object. These can be created and accessed using square bracket notation, however global properties created through assignment have subtle differences to those created using declarations (e.g. declared global variables can't be deleted, properties created through assignment can).

So if you are happy to create proerties of the global object, you can do:

// In global code
var global = this;

// Anywhere you wish to create, read or assign to a global property
global[whatever] ...   // using an identifier whose value resolves to a string
global['whatever'] ... // using a string
global[foo()] ...      // using some other type of expression that returns a string

However, it is considered far better practice to create a single object for such properties so as to avoid the possiblity of naming conflicts with properties of the global object, e.g.

var myVars = {}

myVars[varName]  = varValue;

Otherwise, you can use eval to create local variables in function code:

eval('var ' + whatever + ' = 3');
alert(whatever); // 3

However, that is not remended. It is preferred to use a myVars object that is shared either through a closure, inheritance or as a global variable.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745381441a4625244.html

相关推荐

  • for loop - Iterating over variables in Javascript - Stack Overflow

    My goal with block 2 is to streamline my existing block 1 code by defining javascript variables in a fo

    8小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信