zoukankan      html  css  js  c++  java
  • 如何处理数据

    1渲染数据

    (1)案例分析 原有的list中有三个li,并且每个li身上有onmouseover事件

    <html>

    <body>

      <ul class="list">

          <li>nihao</li>

          <li>1807</li>

          <li>webqianduan</li>  

      </ul>

    </body>

    </html>

    <script>

      var lis=document.querySelectorAll("li");

      for(var i=0; i<lis.length;i++){

      console.log(lis[i].item(i))

      lis[i].onmouseover=function(){

        this.style.backgroundColor="red"

    }

      lis[i].onmouseout=function(){

      this.style.backgroundColor=""

    }
    }

    </script>

    1.字符串拼接,最常用的方法

    var data=["手机app开发",“大数据开发”,"数据爬虫开发" ];

    var st=""

    for(var m=0;m<data.length;m++){

      st+="<li>"

        st+=data[m]

      st+="</li>"  

    }

    document.querySelector(".list").innerHTML+=st;

    缺点:原有dom的事件都会丢失

    原因:就在与innerHTML这个属性,这个属性是返回或设置Dom中的内容,以字符串形式返回,拼接完之后是string类型,而onmouse这些属性是Dom元素对象身上的,所以这些onmouse系列的属性就丢失了。

     

      2 dom循环

    var data=["手机app开发","大数据开发","数据爬虫开发"];

    for(var m=0;m<data.length;m++){

      var li=document.createElement("li");

      li.innerHTML=data[m];

      document.querySelector(.list).appendChild(li)  

    }

    优点:原有的dom身上的事件不会丢失,不影响其他dom

    缺点:dom回流次数过多,严重影响网页性能。

      3     模板

    模板的本质就是字符串

     

      4  文档碎片

    优点: 既不影响原有dom的属性,也只回流一次。

    var frag=document.createDocumentFragment()

    for(var m=0;m<data.length;m++){

      var li=document.createElement("li");

      li.innerHTML=data[m];

      frag.appendChild(li)

    }

    document.querySelector('.list').appendChild(frag)

    Dom回流

    每当对dom元素进行增删改的时候,浏览器就会重新加载一个,把新的结果渲染出来。

     

    无论上面的四种方法,新增的li没有onmouseover事件,如果保证新增的li也拥有添加的事件。用dom遍历添加事件是不行的,用事件委托。

    var lis=document.querySelectorAll("li");

    var list=document.querySelector(".list")

    list.onmouseover=function(ev){

      var ev=ev||window.event;

      var li=ev.target;

      for(var i=0; i<list.children.length;i++){

        list.children[i].style.background=""

    }

      li.style.background="blue"

    }

     

    事件委托

     

    利用的原理就是事件冒泡机制,但并不是所有的事件都有冒泡机制,比如mouseenter

     

    Mouseleave

     

    Xml

     

    常见的数据存储格式有两种。一种是json 99.99% 另一种是xml

     

    1. 要有xml申明
    2. 要有一个根节点
    3. Xml必须是双标签
    4. 对大小写敏感
    5. Xml标签的属性值一定要加引号

     

    Xml的内容不要使用特殊符号 <  > &

     

    文档中的空格会被保留

     

    Ajax 获取数据,

     

    Json格式  需要解析  string类型==json类型"{'name':'zhang'}"==>{'name':'zhang'}

     

    用JSON.parse() ,反过来{'name':'zhang'}==>"{'name':'zhang'}"

     

    JSON.stringify()

     

    注意事项: josn  里面用双引号 外面只能用单引号

    var xmlhttp=new XMLHttpRequest;

    xmlhttp.open("GET","01.xml",true)

    xmlhttp.send()

    xmlhttp.onreadystatechange=function(){

      if(xmlhttp.readyState=4&&xmlhttp.status==200){

        //console.log(typeof xmlhttp.responseXML)

        var dataobj=xmlhttp.responseXML;

        console.dir(dataobj.querySelector('autor'))

         //dataobj就是document对象

        document.getElementById("autor").innerHTML=dataobj.querySelector('autor').innerHTML

    }

    }

     

  • 相关阅读:
    【转】Windows Socket网络编程(二)套接字编程原理
    获取本地IP地址,并在IP CONTROL控件中显示出来
    PAT 1021 Deepest Root[并查集、dfs][难]
    1025 PAT Ranking[排序][一般]
    PAT 1028 List Sorting[排序][一般]
    PAT 1023 Have Fun with Numbers[大数乘法][一般]
    PAT 1026 Table Tennis[比较难]
    Andrew NgML第十章应用机器学习的建议
    PAT 1020 Tree Traversals[二叉树遍历]
    PAT 1022 Digital Library[map使用]
  • 原文地址:https://www.cnblogs.com/txf-123/p/10530275.html
Copyright © 2011-2022 走看看