为什么jquery.each在带有参数的函数中旋转一次

为什么jquery.each在带有参数的函数中旋转一次,jquery,each,Jquery,Each,我每个jquery都有问题。这是每一个街区 $(document).ready( function(){ $('td.trh').each(function(index) { frk=fark($(this).text()); // frk useless variable $('td.sure').eq(index).text(frk); // can be $('td.sure').eq(index).text(fark($(this).text(

我每个jquery都有问题。这是每一个街区

$(document).ready( function(){  
    $('td.trh').each(function(index) {
        frk=fark($(this).text()); // frk useless variable
        $('td.sure').eq(index).text(frk); // can be $('td.sure').eq(index).text(fark($(this).text()));
    });
});
td.trh的日期类似于“2012-03-02 11:25:30”,我试图计算经过的时间。。这对第一个项目非常有效,但之后每个循环都停止工作

如果我调用像simdi()这样的函数;没有参数,每个都能完美工作

fark函数类

function saat(trh){ //trh=2012-03-02 11:25:30
    kes=trh.indexOf(' ');
    kes++;
    saat = trh.substring(kes); //saat=11:25:30
    sparca = saat.split(":");
    sTOsn=sparca[0] * 60 * 60; //sparca[0]=11 and 60*60 for hour to sec conversion
    dkTOsn=sparca[1] * 60; //sparca[1]=25 and 60*60 for minute to sec conversion
    sn=sparca[2] * 1;
    sn=sTOsn+dkTOsn+sn; // all of this saat function  for calculate time in sec
    return sn;
}
function simdi() {
    var now = new Date();
    var s = now.getHours();
    var dk = now.getMinutes();
    var nsn = now.getSeconds();
    sTOsn=s * 60 * 60;
    dkTOsn=dk *60;
    rsn = nsn + dkTOsn + sTOsn; // all of this simdi function  for calculate current time in sec
    return rsn;
}
function fark(trh) {
    ssaat=saat(trh); // parameter date calculating in sec
    suan=simdi(); // current date calculating in sec
    snc=suan-ssaat; // calculating beetween parameter date and current date time difference
    hh= snc / 3600 | 0;
    mm= (snc - (hh*3600)) / 60 | 0;
    ss= snc % 60;
    return (hh < 10 ? "0" : "") + hh + (mm < 10 ? ":0" : ":")+ mm + (ss < 10 ? ":0" : ":")+ ss; // and formating time differenc like hour:minute:second
}
函数saat(trh){//trh=2012-03-02 11:25:30 kes=trh.indexOf(“”); kes++; saat=trh.substring(kes);//saat=11:25:30 sparca=saat.split(“:”); sTOsn=sparca[0]*60*60;//sparca[0]=11和60*60用于小时到秒的转换 dkTOsn=sparca[1]*60;//sparca[1]=25和60*60,用于分秒转换 sn=sparca[2]*1; sn=sTOsn+dkTOsn+sn;//用于以秒为单位计算时间的所有saat函数 返回序列号; } 函数simdi(){ var now=新日期(); var s=now.getHours(); var dk=now.getMinutes(); var nsn=now.getSeconds(); sTOsn=s*60*60; dkTOsn=dk*60; rsn=nsn+dkTOsn+sTOsn;//用于以秒为单位计算当前时间的所有simdi函数 返回rsn; } 功能fark(trh){ ssaat=saat(trh);//以秒为单位计算参数日期 suan=simdi();//以秒为单位计算当前日期 snc=suan ssaat;//计算参数日期和当前日期时间差 hh=snc/3600 | 0; mm=(snc-(hh*3600))/60 | 0; ss=snc%60; 返回(hh<10?:0:“)+hh+(mm<10?”:0:“)+mm+(ss<10?”:0:“:”+ss;//和格式化时间差,如小时:分钟:秒 } 语句

saat = trh.substring(kes);
覆盖您的函数
saat
。换成

var localSaat = trh.substring(kes);
下一个声明是

var sparca = localSaat.split(":");

您应该始终在函数中的局部变量前面使用
var
,这样它们就不会变为全局变量并破坏全局名称空间(并导致类似的问题)。

抱歉,但仍然很难判断问题出在哪里。什么是frk?如果它是全局的,你会意识到它每次通过循环都会被覆盖,对吗?预期的和实际的行为是什么?谢谢你的回答。代码现在可以正常工作了。这真是一个愚蠢的错误:)我不敢相信我错过了它,我看到了所有这些全局变量,并认为它们出于某种原因是必要的,但我没有看到其中一个全局变量与函数同名(saat)