Javascript 搜索/替换循环出错

Javascript 搜索/替换循环出错,javascript,datetime,date-formatting,Javascript,Datetime,Date Formatting,我们有一个课程表,看起来像东部时间的以下(前4行) Sat 12/08/2012 1:00-3:30 PM Mon 12/10/2012 9:30-12:00 AM Wed 12/12/2012 9:30-12:00 AM Sat 12/15/2012 1:00-3:30 PM 您可以选中单选按钮并选择不同的时区。例如,如果选择中心时间,则应在更改时看到: Sat 12/08/2012 12:00-2:30 PM Mon 12/10/2012 8:30-11:00 AM Wed 1

我们有一个课程表,看起来像东部时间的以下(前4行)

Sat 12/08/2012  1:00-3:30 PM
Mon 12/10/2012  9:30-12:00 AM
Wed 12/12/2012  9:30-12:00 AM
Sat 12/15/2012  1:00-3:30 PM
您可以选中单选按钮并选择不同的时区。例如,如果选择中心时间,则应在更改时看到:

Sat 12/08/2012  12:00-2:30 PM
Mon 12/10/2012  8:30-11:00 AM
Wed 12/12/2012  8:30-11:00 AM
Sat 12/15/2012  12:00-2:30 PM 
相反,你会看到:

Wed 30/05/2012  8:09 am-11:09 pm
Sat 00/08/2012  12:09-2:09 pm
Mon 30/10/2012  8:09 am-11:09 pm
Wed 30/12/2012  8:09 am-11:09 pm
部分原因可能是日期格式问题,但其他地方的格式工作正常。我认为主要的问题在于change循环(each),它获取每行的三个部分(0=天,1=日期,2=时间(实际上被分成0和1的子数组用于开始和结束时间,午夜有一个特殊情况))为新时区应用时移,并构建新行内容。我找不到哪里出了问题。任何想法都值得赞赏。(省略了初始变量和其他顶级内容):

$('.timezoneSel')。单击(函数(evtObj){
_curevtObj=evtObj;
_prevtmzObj=_curtmzObj;
$('input.timezoneSel[value=“”+_curevtObj.target.value+“”)。每个(函数(){
$(this.attr('checked',true);
});
对于(var x=0;x-1)?true:false);
rowtimearr=rowtime.split(“-”);
如果(rowtimearr[0]==MIDNITEST)rowtimearr[0]=“上午12:00”;
如果(rowtimearr[1]==midnitest)rowtimearr[1]=“上午12:00”;
如果(rowtimearr[0].indexOf(“AM”)<0&&rowtimearr[0].indexOf(“PM”)<0)rowtimearr[0]+=isEvening?“PM”:“AM”;
newStartDate=新日期(rowdate+''+rowtimearr[0]);
newEndDate=新日期(rowdate+''+rowtimearr[1]);
newStartDateMsec=newStartDate.getTime()+((_curtmzObj.offset-_prevtmzObj.offset)*msecPerHour);
newEndDateMsec=newEndDate.getTime()+((curtmzObj.offset-\u prevtmzObj.offset)*msecPerHour);
newStartDate=新日期(newStartDateMsec);
console.log(newStartDate);
newEndDate=新日期(newEndDateMsec);
$(this).contents().find('span')。每个(函数(icol2,vcol2){
adjStartTimeTT=newstardate.format('tt');
adjEndTimeTT=newEndDate.format('tt');
console.log(adjStartTimeTT,adjEndTimeTT);
开关(icol2){
案例0:
vcol2.innerHTML=newStartDate.format(“ddd”);
打破
案例1:
vcol2.innerHTML=newStartDate.format(“MM/dd/yyyy”);
打破
案例2:
vcol2.innerHTML=((adjStartTimeTT==adjEndTimeTT)?newStartDate.format(“h:mm”):newStartDate.format(“h:mm tt”)+“-”+((useMidNite&&newEndDate.format(“h:mm tt”)==“12:00 AM”)?midnitest:newEndDate.format(“h:mm tt”);
打破
}
});
});
填充度=假;
});

好的,结果是这一行:

$('.TPR_tblcoursedetails').html($('.TPR_tblcoursedetails').html().replace(/ EST/g, ""));
在主循环上面的,不是循环本身。它只是抓住EST一次,然后替换它,但它也让它下面的大循环做同样的事情,所以交互不正确。我们将其更改为:

$('.TPR_tblcoursedetails').each(function(iobj,vobj){
                vobj.innerHTML.replace(/ EST/g, "");
            });

我只建议重构这段代码:从UI代码(jQuery/HTML)中提取计算时区的代码。这样就更容易理解、修复和测试这段代码。否则你需要找到一个真正熟练的(或无聊的?)谢谢,虽然这是两者的交叉点。也许。嘿,你有一个日期格式库!它是哪一个?也许你可以更多地利用它。好吧,这是一个附带的东西,但这段代码在EktronCMS400中,JS日期格式语法似乎比ASP.NET-very使用的稍有不同烦人的--以后再调查吧。
$('.TPR_tblcoursedetails').each(function(iobj,vobj){
                vobj.innerHTML.replace(/ EST/g, "");
            });