Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript函数从foreach切换到for循环_Javascript_Function_Loops_For Loop_Foreach - Fatal编程技术网

将javascript函数从foreach切换到for循环

将javascript函数从foreach切换到for循环,javascript,function,loops,for-loop,foreach,Javascript,Function,Loops,For Loop,Foreach,我正在尝试修复我使用“forEach”构建的一个函数,该函数与应该过时的web浏览器(IE)不兼容。我是用Javascript做的。我尝试将其转换为for循环,但没有成功。如果有人能帮我转换这两个函数,去掉foreach并使用for循环,我将非常感谢任何帮助 下面是它们引用的两个数组 var yr1 = 2011, yr2 = 2012, yr3 = 2013, yr4 = 2014; var years = [yr1, yr2, yr3, yr4]; //array with months a

我正在尝试修复我使用“forEach”构建的一个函数,该函数与应该过时的web浏览器(IE)不兼容。我是用Javascript做的。我尝试将其转换为for循环,但没有成功。如果有人能帮我转换这两个函数,去掉foreach并使用for循环,我将非常感谢任何帮助

下面是它们引用的两个数组

var yr1 = 2011, yr2 = 2012, yr3 = 2013, yr4 = 2014;
var years = [yr1, yr2, yr3, yr4];
//array with months and associated days
var calendar = [
    ["January", 31],["February", 28],["March", 31],["April", 30],["May", 31],["June", 30],["July", 31],["August", 31],["September", 30],
    ["October", 31],["November", 30],["December", 31]];
下面是需要从forEach更改为for循环的函数

    //this creates the month values
function generateMonths() {
    var df = document.createDocumentFragment();
    calendar.forEach(function(info, i) {
        df.appendChild(createOption(info[0], i));
    });
        //clears past months
    clearChildren(sel_month);
        //appends new months onto variable df
    sel_month.appendChild(df);
}
//this creates the year values
function generateYears() {
    var df = document.createDocumentFragment();
    years.forEach(function(i) {
        df.appendChild(createYearOption(i));
    });
    //clears past months
    clearChildren(sel_year);
    //appends new months onto variable df
    sel_year.appendChild(df);
}
这里是我失败的尝试,以证明我尝试过

    //this creates the month values
function generateMonths() {
    var df = document.createDocumentFragment();
        for (var w = 0; w < 12; w++) {
            (function(calendar, w) {
                df.appendChild(createOption(calendar[0], w));
            });
        }
    //calendar.forEach(function(info, i) {
        //df.appendChild(createOption(info[0], i));
    };
        //clears past months
    clearChildren(sel_month);
        //appends new months onto variable df
    sel_month.appendChild(df);
}
    //this creates the year values
    function generateYears() {
    var df = document.createDocumentFragment();
        for (var w = 0; w < 12; w++) {
            (function(years) {
                df.appendChild(createOption(years[0]));
            });
        }        

        //years.forEach(function(i) {
        //df.appendChild(createYearOption(i));
    };
        //clears past months
    clearChildren(sel_year);
        //appends new months onto variable df
    sel_year.appendChild(df);
}
//这将创建月份值
函数generateMonths(){
var df=document.createDocumentFragment();
对于(var w=0;w<12;w++){
(功能(日历,w){
appendChild(createOption(日历[0],w));
});
}
//日历.forEach(功能(信息,i){
//appendChild(createOption(信息[0],i));
};
//清理过去几个月
儿童(选择月);
//将新月份附加到变量df上
选择一个月的儿童(df);
}
//这将创建年份值
函数生成器(){
var df=document.createDocumentFragment();
对于(var w=0;w<12;w++){
(职能(年){
df.appendChild(createOption(年[0]);
});
}        
//年份。forEach(功能(一){
//df.appendChild(选项(i));
};
//清理过去几个月
儿童(选择年);
//将新月份附加到变量df上
儿童选择年(df);
}
相当于:

for(var i=0; i<years.length; i++) {
  df.appendChild(createYearOption(years[i]));
}
而是对每个数组的两个元素使用循环来创建选项

for(var i=0; i<calendar.length; i++) {
  df.appendChild(createOption(calendar[i][0], calendar[i][1]));
}
(变量i=0;i)的

相当于:

for(var i=0; i<years.length; i++) {
  df.appendChild(createYearOption(years[i]));
}
而是对每个数组的两个元素使用循环来创建选项

for(var i=0; i<calendar.length; i++) {
  df.appendChild(createOption(calendar[i][0], calendar[i][1]));
}

for(var i=0;i如果需要,您可以随时为每个
forEach
添加垫片。来源:

if(!Array.prototype.forEach){
Array.prototype.forEach=函数(fn,范围){
对于(变量i=0,len=this.length;i
如果需要,您可以随时为每个
填充垫片。从:

if(!Array.prototype.forEach){
Array.prototype.forEach=函数(fn,范围){
对于(变量i=0,len=this.length;i
另一个呢..很抱歉我遇到了麻烦。另一个呢..很抱歉我遇到了麻烦。+1乍一看,这似乎是提供兼容性的最简单解决方案。+1乍一看,这似乎是提供兼容性的最简单解决方案。
if ( !Array.prototype.forEach ) {
  Array.prototype.forEach = function(fn, scope) {
    for(var i = 0, len = this.length; i < len; ++i) {
      fn.call(scope || this, this[i], i, this);
    }
  }
}