Что не так с этим JavaScript? Массив не определен - PullRequest
6 голосов
/ 18 мая 2010

Что не так с этим кодом?

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

Это ошибка, которую я получаю:

ReferenceError: array is not defined

Я использую Google Chrome, если он помогает.

Ответы [ 8 ]

23 голосов
/ 18 мая 2010

Это не php - вы должны использовать

var variable_name = new Array()

или даже лучше

var variable_name = []
8 голосов
/ 18 мая 2010

Это не то, как объявлять переменные как пустой массив. Вы должны использовать:

var articleHTML = [];

См. Этот предыдущий вопрос для обоснования использования этого метода вместо new Array()

2 голосов
/ 18 мая 2010
var articleHTML = new Array();
2 голосов
/ 18 мая 2010

Это [] в ECMAScript; это не PHP. Интерпретатор прав - array не определен , поэтому вы получаете это.

1 голос
/ 18 мая 2010

вместо

var articleHTML = array();

и

var bodyHTML = array();

сделать

var articleHTML = [];

и

var bodyHTML = [];
0 голосов
/ 21 февраля 2013

Внимание!Javascript IS чувствителен к регистру, вы должны использовать верхний регистр A в слове Array.

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

Так что это правильные способы:

var myarr = new Array(); //THIS IS CORRECT (note the "big" A) :)
var myarr = []; //and this is correct too
0 голосов
/ 19 мая 2010

Вам также не нужно использовать var шесть раз, вы можете сделать:

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

Который работает так же хорошо, как ваши шесть переменных, но выглядит намного лучше.

Также есть ряд веских причин не использовать new в экземпляре массива (кроме []; намного короче, чем new Array ();)

0 голосов
/ 18 мая 2010

Сначала нужно определить

var divarray = new Array(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...