Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Storing DOM reference elements in a Javascript array

Tags:

javascript

dom

Dear experts, I was trying to dynamically generate DOM elements using JS.

I read from Douglas Crockford's book that DOM is very very poorly structured.

Anyways, I would like to create a number of DIVISION elements and store the reference into an array so it could be accessed later.

Here's the code

for(i=0; i<3; i++) {
    var div = document.body.appendChild(document.createElement("div"));
    var arr = new Array();
    arr.push(div);
}

Somehow this would not work..... There is only 1 div element created. When I use the arr.length to test the code there is only 1 element in the array.

Is there another way to accomplish this?

Thanks in advance

like image 685
Dennis D Avatar asked Dec 04 '22 12:12

Dennis D


2 Answers

You are recreating the array with each iteration (and thus blanking it).

I think you want something like this.

var arr = []; // more succinct version of new Array();

for (var i = 0; i < 3; i++) {
    var div = document.body.appendChild(document.createElement('div'));
    arr.push(div);        
};
like image 197
alex Avatar answered Dec 21 '22 02:12

alex


You're making a separate array each time the loop runs.
Therefore, each array instance

You need to move the arr variable outside the loop.

like image 32
SLaks Avatar answered Dec 21 '22 03:12

SLaks