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

10

这段代码有什么问题?

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个回答

25

这不是PHP - 你应该使用

var variable_name = new Array()

或者更好

var variable_name = []

8

这不是声明空数组的正确方式。您应该使用以下方法:

var articleHTML = [];

查看这个之前的问题,了解为什么要使用这种方法而不是new Array()


2
var articleHTML = new Array();

2

在ECMAScript中,[]表示一个空数组;这与PHP不同。解释器是正确的——array未定义,因此你会得到这样的结果。


2
注意!JavaScript是大小写敏感的,在单词Array中必须使用大写字母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

1

不要使用

var articleHTML = array();

var bodyHTML = array();

var articleHTML = [];

并且

var bodyHTML = [];

1

首先,您需要定义

var divarray = new Array(); 

0

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

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

这个方法和你的六个变量一样有效,但看起来更好。

此外,有许多令人信服的理由不使用new来实例化数组(除了[]比new Array()更短)。


玩得开心的时候,阅读自己的代码就变得非常困难了——很难确定变量是在哪里首次声明的。看看Python就知道了。 - Alexander Mills
Ruby也是这样,真可惜。 - Alexander Mills

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接