function update() {
if (request.readyState == 4) {
if (request.status == 200) {
json=eval("json="+"("+request.responseText+")");
$I('div'+json['groupname'],"");
if(json['addrtype']=='view'){
addressList(json['groupcounter']);
} for(i=0;i<json['onegroupnum'];i++){
document.getElementById(json['groupname']+'['+i+']').innerHTML=json['faxnameary'][i];
document.getElementById(json['groupname']+'['+i+']').title=json['companyary'][i];
var faxnum=document.getElementById('addrFaxNum'+json['groupname']+'['+i+']');
faxnum.id='addrFaxNum'+json['faxnumidsary'][i];
faxnum.name='addrFaxNum'+json['faxnumidsary'][i];
faxnum.value=json['faxnumary'][i];
var recname=document.getElementById('addrRecName'+json['groupname']+'['+i+']');
recname.id='addrRecName'+json['faxnumidsary'][i];
recname.name='addrRecName'+json['faxnumidsary'][i];
recname.value=json['faxnameary'][i]; if(document.getElementById('addrCompany'+json['groupname']+'['+i+']')){
var company=document.getElementById('addrCompany'+json['groupname']+'['+i+']');
company.id='addrCompany'+json['faxnumidsary'][i];
company.name='addrCompany'+json['faxnumidsary'][i];
company.value=json['companyary'][i];
} } if(json['addrtype']=='add'){
addGroupAddr(json['faxnumids']);
}
}
}
}第一次触发事件调用完全ok,下次再点击触发就不行了, for循环下面的代码根本没执行,(包括for循环),高手们帮看看怎么一回事!!

解决方案 »

  1.   

    for循环下面这个方法     if(json['addrtype']=='add'){
                    addGroupAddr(json['faxnumids']);
    第二次执行的时候就不行了
      

  2.   


    for(i=0;i<json['onegroupnum'];i++){
       alert(i);             document.getElementById(json['groupname']+'['+i+']').innerHTML=json['faxnameary'][i];有多少个值?
      

  3.   


       if(json['addrtype']=='add'){
            alert(i);
                    addGroupAddr(json['faxnumids']);
                }
    如果只有一个弹出框,说明json['addrtype']=='add'这个条件第二次就不成立了,这个问题只能慢慢检查是哪错了。
      

  4.   

    如果把if(json['addrtype']=='add'){
            alert(i);
                    addGroupAddr(json['faxnumids']);
                }放在for上面的话每次就都好用 现在怀疑for循环的问题 可是看了又看 还是没问题 我对ajax一些概念理解的不是很深, 搞这个东西的时候才开始学
      

  5.   

    你的addrtype是什么东东?if(json['addrtype']=='add'){
             alert(json['addrtype']);
                     addGroupAddr(json['faxnumids']);
                 }
      

  6.   

     if(json['addrtype']=='add'){
                    addGroupAddr(json['faxnumids']);
                }
    这段代码你是要他循环,还是不要他循环?
      

  7.   

    addtype就是你说的这个模式
               a(1){
                if(1){
                 b
                   }
               }
      

  8.   

    哦,这样啊。那你应该把他放for循环内啊,你现在都没放到里面,是单独的语句!
      

  9.   

    怎么放在for里面啊,本来就是要最后执行b的,这个应该放最后啊
      

  10.   

    在for循环上面这句话 if(json['addrtype']=='view'){
                            addressList(json['groupcounter']);
                        }
    本来是放在下面的,第二次点击也是不好用,后来放上边就好用了,可是for下边这个方法需要用到for里面的值 ,所以不能放上边
      

  11.   

    嗯 接昨天我的那个提问,点击事件后触发a和b两个方法,b要用到a方法的返回值,我昨天的问题是等a执行完再执行b,现在解决的方法是把b放a的if (request.status == 200) 后面就可以了,传个参数判断是否需要执行b,
    这些都没有问题, 现在是点击触发的时候第一次ok,后面就不行了 ,b就不执行了
      

  12.   

    faxnumids这个变量你是从for循环取的?我没看到这个变量!
      

  13.   

    第一次点击ok,没有问题 , 后面再点这个按钮的话就没有效果了 , 我用alert测试 在for上面的可以alert出来,for下面就不行了,包括for循环,for上面json值是可以取到的
      

  14.   

    faxnumids这个变量是另一个js方法用到取返回值的,faxnumisd对调用的那个方法可以理解成一个变量名,如果在返回值之前执行的话那个方法根据名字去取返回值,但是取不到 ,只有有了返回值才能去取
    貌似很乱
      

  15.   


     if(json['addrtype']=='add'){
                    addGroupAddr(json['faxnumids']);
                }
    这段代码哪里用到了for循环的值?
      

  16.   

    addGroupAddr() 这个方法用到了,那段代码在另一个js里
      

  17.   

    addGroupAddr()参数是json['faxnumids'] , 用参数去取返回值
      

  18.   

    json['faxnumids']这个在for循环也没有啊,你怎么用for循环的值?
      

  19.   


    把for循环去掉的话随便点多少次都ok,会不会和返回值有关呢?
      

  20.   

    json['faxnumids'] 是一个字符串,包含所有for循环里值的id,经过addGroupAddr()处理,就能对应上每个值的id 这个没问题,第一次点都可以,为什么第二次就不行呢
      

  21.   

    哦 不好意思 弄错了 json['groupcounter'] 这个参数是组的序号, 根据这个序号去取这个组里面的人 
      

  22.   

    现在把
    if(json['addrtype']=='add'){
                    addGroupAddr(json['faxnumids']);
                }
    放到for循环上面了,然后通过点击其它事件调用这个方法(json['addrtype'] != 'add' 的时候),然后为页面赋值,这时候在点击触发json['addrtype']=='add' 是完全好用的, 
    现在的问题是ajax每次点击应该都用for循环处理返回啊, 可是经过测试只处理了一次
      

  23.   

    你的意思点一次,for整个循环一次,点两次,for循环整个循环两次?
      

  24.   

    是不是请求没触发呀?xhr request的url中加随机数了吗?
    url = "xxx.php?n=" + escape(new Date())
      

  25.   

    应该是触发了啊 for循环上边的都执行了 我先试试
      

  26.   

    如果两次返回结果是一样的话:
    faxnum=document.getElementById('addrFaxNum'+json['groupname']+'['+i+']'); 
    faxnum.id='addrFaxNum'+json['faxnumidsary'][i]; <---此处第一次改了id,第二次的时候用上面的语句得不到 faxnum对象了吧,把改id的都注释掉试试看
      

  27.   

    faxnum.id='addrFaxNum'+json['faxnumidsary'][i]; 果然是这行 , 把alert放在这行下边除了第一次执行外都没有执行,这个应该怎么解决?