【问题标题】:What's wrong with this javascript? Array not defined这个javascript有什么问题?数组未定义
【发布时间】:2011-02-21 01:27:27
【问题描述】:

这段代码有什么问题?

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

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

【问题讨论】:

    标签: javascript html arrays reference


    【解决方案1】:

    这不是 php - 你应该使用

    var variable_name = new Array()
    

    甚至更好

    var variable_name = []
    

    【讨论】:

      【解决方案2】:

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

      var articleHTML = [];
      

      See this previous question 使用此方法而不是new Array() 的原因

      【讨论】:

        【解决方案3】:

        在 ECMAScript 中是 [];这不是 PHP。解释器是对的 - array 没有定义,这就是你得到它的原因。

        【讨论】:

          【解决方案4】:
          var articleHTML = new Array();
          

          【讨论】:

            【解决方案5】:

            代替

            var articleHTML = array();
            

            var bodyHTML = array();
            

            var articleHTML = [];
            

            var bodyHTML = [];
            

            【讨论】:

              【解决方案6】:

              注意! Javascript 区分大小写,您必须在 word 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
              

              【讨论】:

                【解决方案7】:

                你首先需要定义

                var divarray = new Array(); 
                

                【讨论】:

                  【解决方案8】:

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

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

                  这和你的六个变量一样好用,但看起来更好。

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

                  【讨论】:

                  • 以这种方式阅读自己的代码很有趣——完全难以确定变量的首次声明位置。见蟒蛇。
                  • 红宝石也是这样丢人的
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-08-28
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-09-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多