zoukankan      html  css  js  c++  java
  • js setTimeout

    在类似于修改的前端界面中,需要读取用户以前的数据并在页面载入的时候给页面赋上默认的值。

    给下拉框默认选中可用$().val()方法,或者或者找到下拉框的节点添加属性attr("selected",'selected');

    最近做的一个html5app的开发在此基础上更加复杂了一些。

    首先从借口获取到类似[3,8,16]这样的数组,这就意味这要循环出三个下拉框,分别赋值。

    那么就根据数组长度循环出对应个数的下拉框,用js写入html。

    下拉框的数量是有了,但是下拉框的下拉内容不是静态的,而是要从接口获取的。

    从借口获取下拉框的列表内容,整理并写入循环出的下拉框,(循环出的下拉框都有一样的class,写入下拉列表时$(.class)像这样根据class来写入,这样下拉列表就都有了)。

    然后再来循环每一个下拉列表,给下拉列表依次赋上数组里的值,我用的是each循环,因为没有计数器,所以在循环里面自己建了个计数器,类似如下。

     //循环必含信息赋值
             function add_andinfo_value(){
                  $(".and_info_list").each(function(){
                         //循环计数
                      i=getLocVal('ii');
                      if(i==""){
                          i=0;
                      }
                      //alert(data.andInfoCategoryParamIds[i]);
                    var qq =$(this).find("option").eq(data.andInfoCategoryParamIds[i]);
                    qq.attr("selected",'selected');
                    //修改text
                     $(this).prev().prev().text(qq.text());
                    i++;
                    setLocVal('ii',i);
                 })
            }

    注意,这个计数器是使用本地储存,在数组都完成后要记得把这个本地存储清空,否则会有意想不到的事情发生。

    这样就完成了赋值,你以为就这样结束了。图样图破森,一直赋值不成功。

    最后分析后的结果是,赋值函数赋值的时候,html的列表内容还没有被载入,即使载入函数是在前面执行的。这样的话就使用setTimeout函数将赋值函数延迟一秒执行,结果成功。

    -----------打脸更新-------------------

    在后面不就的学习和工作中发现,使用setTimeout虽然短时间内解决了问题,但这种写法是不稳定和不负责任的。

    新学到的赋值是在ajax中进行赋值,这样能保证更快的赋值,对异步加载还需要有更好的认识。

    在ajax内部写入内容后进行赋值,而不是在ajax函数后面赋值。

  • 相关阅读:
    标准化R包开发流程
    创建Rdemo项目
    rJava在ubuntu上的安装
    Linux初始root密码设置
    检查网卡错误
    统计学习方法-李航 第一章
    ubuntu16.04细节设置
    linux指令学习
    Python在ubuntu16.04上环境搭建
    kuberneets 1.17 设置 kube-reserved, system-reserved
  • 原文地址:https://www.cnblogs.com/tingfengqieyu/p/5115498.html
Copyright © 2011-2022 走看看