Dennis D
Dennis D

Reputation: 1343

Storing DOM reference elements in a Javascript array

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

Upvotes: 4

Views: 13620

Answers (2)

alex
alex

Reputation: 490163

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);        
};

Upvotes: 16

SLaks
SLaks

Reputation: 887315

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.

Upvotes: 3

Related Questions