6

What's wrong with this code?

var divarray = document.getElementById("yui-main").getElementsByTagName("div");
var articleHTML = array();
var absHTML;
var keyHTML;
var bodyHTML = array();
var i = 0;
for ( var j in divarray) {
    if(divarray[i].className == "articleBody"){
  alert("found");
  articleHTML = divarray[i];
  break;
 }
 bodyHTML[i] = '';
 if(articleHTML[i].className == "issueMiniFeature"){continue;}
 if(articleHTML[i].className == "abstract"){absHTML = articleHTML[i]; continue;}
 if(articleHTML[i].className == "journalKeywords"){keyHTML = articleHTML[i]; continue;}
 bodyHTML[i] = articleHTML[i];
 i++;
}

This is the error I am getting:

ReferenceError: array is not defined

I am using Google Chrome if it helps any.

0

8 Answers 8

25

It's not php - you should use

var variable_name = new Array()

or even better

var variable_name = []
Sign up to request clarification or add additional context in comments.

Comments

8

That's not how to declare variables as an empty array. You should be using:

var articleHTML = [];

See this previous question for reasoning of using this method instead of new Array()

Comments

2

It's [] in ECMAScript; this isn't PHP. The interpreter is right - array is not defined, which is why you're getting that.

Comments

2
var articleHTML = new Array();

Comments

2

Note! Javascript IS case sensitive you have to use upper-case A in word Array.

var myarr = new array(); //THIS IS WRONG! and will result in error not defined

So these are the correct ways:

var myarr = new Array(); //THIS IS CORRECT (note the "big" A) :)
var myarr = []; //and this is correct too

Comments

1

Instead of

var articleHTML = array();

and

var bodyHTML = array();

do

var articleHTML = [];

and

var bodyHTML = [];

Comments

1

You first need to define

var divarray = new Array(); 

Comments

0

You also don't need to use var six times, you can do:

var divarray = document.getElementById("yui-main").getElementsByTagName("div"),
    articleHTML = [],
    absHTML = [],
    keyHTML = [],
    bodyHTML = [],
    i = 0;

Which works just as well as your six vars but looks much nicer.

Also there are a number of compelling reasons not to use new in instantiate an array (besides []; is much shorter than new Array();)

2 Comments

having fun reading your own code that way - totally difficult to determine where variables are first declared. see python.
ruby is also that way for shame

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.