这个javascript有什么问题?数组未定义

时间:2010-05-18 19:05:09

标签: javascript html arrays reference

这段代码出了什么问题?

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

我正在使用谷歌浏览器,如果有帮助的话。

8 个答案:

答案 0 :(得分:23)

这不是php - 你应该使用

var variable_name = new Array()

甚至更好

var variable_name = []

答案 1 :(得分:8)

这不是如何将变量声明为空数组。你应该使用:

var articleHTML = [];

See this previous question有关使用此方法而不是new Array()

的推理

答案 2 :(得分:2)

ECMAScript中的[];这不是PHP。解释器是正确的 - array 未定义,这就是你得到它的原因。

答案 3 :(得分:2)

var articleHTML = new Array();

答案 4 :(得分:1)

而不是

var articleHTML = array();

var bodyHTML = array();

DO

var articleHTML = [];

var bodyHTML = [];

答案 5 :(得分:0)

首先需要定义

var divarray = new Array(); 

答案 6 :(得分:0)

你也不需要使用var六次,你可以这样做:

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

与你的六个变量一样有效,但看起来更好。

还有一些令人信服的理由不在实例化数组时使用new(除了[];比新的Array()短得多;)

答案 7 :(得分:0)

请注意! Javascript区分大小写,你必须在单词数组中使用大写A.

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