代码之家  ›  专栏  ›  技术社区  ›  Arlen Beiler

代码在foreach中不起作用

  •  0
  • Arlen Beiler  · 技术社区  · 16 年前

    这是我的密码:

    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
    

    我用的是谷歌浏览器

    5 回复  |  直到 16 年前
        1
  •  0
  •   austin cheney austin cheney    16 年前

    我认为你把JavaScript误认为是PHP的功能。JavaScript没有 foreach for in ,这是您不正确使用的和正常的 for 对于 在

    在JavaScript中 循环在其参数中有3个部分,用分号分隔,如下所示:
    *incrementor的起始位置(如果变量先前定义为0或正整数,则为可选)

    *递增法

    在下面的例子中 arrayName 是数组名称的值I:

    for (; a < arrayName.length; a += 1) {
    for (a = x + 1; a < arrayName.length + 3; a += 2) {
    

    这个 if 条件:
    *要搜索的索引的值 如果 条件

    下面的示例将返回提供给objectName对象文本的“book”索引的值。 objectName 是我为示例对象文字创建的名称:

    for ("book" in objectName) {
        if (objectName.hasProperty("book")) {
    
        2
  •  4
  •   Justin Niessner    16 年前

    javascript for...in 不做您期望的事情(通过数组中的元素枚举)。

    为了…在

    你需要用一个好的,老式的 for 循环。

        3
  •  1
  •   Carlos Precioso    15 年前

    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...*/
    });
    
        4
  •  0
  •   Robusto    16 年前

    为什么不改用传统的for循环呢?你不是真的在用关联数组。。。

        5
  •  0
  •   Peter Bailey    16 年前

    你想要一个标准 for for..in

    for( var i = 0, l = divarray.length; i < l; i++ ) {
    

    还有一些其他的东西,然后继续尝试迭代每个元素

    for( var j in articleHTML ){
    

    articleHTML 此时保存对单个HTML节点的引用,而不是任何类型的集合或数组。