这是我的代码:
var divarray = document.getElementById("yui-main").getElementsByTagName("div");
var articleHTML;
var absHTML;
var keyHTML;
var bodyHTML = [];
for( var i in divarray) {
if(divarray[i].className == "articleBody"){
articleHTML = divarray[i];
for( var j in articleHTML ){
bodyHTML[i] = '';
if(articleHTML[j].className == "issueMiniFeature"){continue;}
if(articleHTML[j].className == "abstract"){absHTML = articleHTML[i]; continue;}
if(articleHTML[j].className == "journalKeywords"){keyHTML = articleHTML[i]; continue;}
bodyHTML[i] = articleHTML[i];
}
break;
}
i++;
}
我得到的错误是:
SyntaxError: Unexpected token var
我正在使用谷歌浏览器
答案 0 :(得分:5)
javascript for...in
没有达到你所期望的效果(通过数组中的eleemnts枚举。
for...in
将枚举构成对象的键/值对(或公共变量)(这不是你想要的)。
你需要使用一个好的,老式的for
循环。
答案 1 :(得分:1)
您可以将其添加到您的脚本中:
Array.prototype.foreach = function (callback) {
for (var i=0; i < this.length; i++) {
callback(this[i]);
}
}
然后你就这样做了:
myarray.foreach(function (currentItem) {
/*...do whatever with the currentItem...*/
});
答案 2 :(得分:0)
为什么不使用传统的for循环呢?你真的不是在这里使用关联数组......
答案 3 :(得分:0)
这不是迭代集合的正确方法。
您需要标准的for
循环,而不是for..in
循环
for( var i = 0, l = divarray.length; i < l; i++ ) {
还有别的东西,然后你继续尝试迭代每个元素
for( var j in articleHTML ){
此时 articleHTML
包含对单个HTML节点的引用 - 而不是任何类型的集合或数组。
答案 4 :(得分:0)
我认为你错误地将JavaScript用于PHP的功能。 JavaScript没有foreach
个循环。 JavaScript有for in
,这是你错误使用的和正常的for
循环。处理数组时使用标准for
循环。您将需要使用带有对象文字的for in
循环,因为索引不是递增正整数的简单。
在JavaScript中,for
循环的参数中有3个部分用分号分隔,如下所示:
*增量器的起始位置(如果变量先前定义为0或正整数,则为可选)
*增量器的结束位置
*增量方法
在以下示例中,arrayName
是我为数组名称编写的值:
for (; a < arrayName.length; a += 1) {
for (a = x + 1; a < arrayName.length + 3; a += 2) {
for in
循环参数有两个必需部分,第三部分用于防止使用if
条件出错:
*要搜索的索引的值
*要搜索的容器的名称
*第三部分是if
条件
以下示例将返回提供给objectName对象文字的“book”索引的值。 objectName
是我为示例对象文字所做的名称:
for ("book" in objectName) {
if (objectName.hasProperty("book")) {