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函数后面赋值。

  • 相关阅读:
    三分
    知识点整合摘取
    Codeforces Round #533 C. Ayoub and Lost Array
    判断当前VC 是push还是present的
    自动布局
    获取当前的 viewController
    UIImageView 点击放大缩小
    UIButton 在UIScrollView里面 点击效果不明显的问题
    IOS AutoLayout 遍历修改约束
    GIT 命令 操作 记录
  • 原文地址:https://www.cnblogs.com/tingfengqieyu/p/5115498.html
Copyright © 2011-2022 走看看