HTML5之新特性(选择器、class列表属性、JSON新方法、data自定义数据、延迟加载JS)

HTML5之新特性

 

HTML5新特性的浏览器支持情况

•     http://www.caniuse.com/#index

•      

新的选择器

•     querySelector   获取一个或一组中第一个元素

 

<script>

 

//document.getElementById();

//document.getElementsByTagName();

 

//$('#div1')   $('.box')  $('ul li')

 

window.onload = function(){

     

      //varoDiv = document.querySelector('[title=hello]');

     

      varoDiv = document.querySelector('.box'); //只能选择一组中的第一个元素

     

      //alert(oDiv.length );

     

      oDiv.style.background  = 'red';

     

     

};

 

</script>

</head>

 

<body>

<div id="div1"class="box" title="hello">div</div>

<divclass="box">div2</div>

</body>

 

•     querySelectorAll     获取一组元素

(与jquery的方式差不多)

                

                 window.onload = function(){

      

       var aDiv =document.querySelectorAll('.box');   //获取一组元素

      

       alert(aDiv.length );

      

      

      

      

};

 

</script>

</head>

 

<body>

<div id="div1" class="box"title="hello">div</div>

<div class="box">div2</div>

</body>

 

•     getElementsByClassName  获取一组class元素

 

<script>

 

window.onload = function(){

      

       var aDiv =document.getElementsByClassName('box');

      

       alert(aDiv.length );//2

      

};

 

</script>

</head>

 

<body>

<div id="div1" class="box"title="hello">div</div>

<div class="box">div2</div>

</body>

 

 

 

 

获取class列表属性

•     classList

–    length :  class的长度

–    add()  :  添加class方法

–    remove()  :  删除class方法

–    toggle() :  切换class方法 class中没有则执行添加,有class则执行删除操作

 

window.onload = function(){

    varoDiv = document.getElementById('div1');

    alert(oDiv.classList );  //类似与数组的对象  

};

</script>

</head>

<body>

<div id="div1"class="box1 box2 box3">div</div>

</body>

 

 

window.onload = function(){

       var oDiv =document.getElementById('div1');

       oDiv.classList.add('box4');

             

};

 

</script>

</head>

 

<body>

<div id="div1" class="box1 box2box3">div</div>

</body>

 

 

window.onload = function(){

       var oDiv =document.getElementById('div1');

       oDiv.classList.remove('box2');

      

};

</script>

</head>

<body>

<div id="div1" class="box1 box2box3">div</div>

</body>

 

 

 

 

window.onload = function(){

       var oDiv =document.getElementById('div1');

       oDiv.classList.toggle('box2');

      

};

 

</script>

</head>

 

<body>

<div id="div1" class="box1 box2box3">div</div>

</body>

 

之前有box2,则执行删除操作

 

 

JSON的新方法

•     parse() : 把字符串转成json

–    字符串中的属性要严格的加上引号

•     stringify() : json转化成字符串

–    会自动的把双引号加上

 

/*var str ='{"name":"hello"}';  //一定是严格的JSON形式

var json = JSON.parse(str);

alert( json.name );*/

 

 

var json = {name :"hello"};

var str = JSON.stringify(json);

alert( str );

 

•     新方法与eval的区别

•      

//eval : 可以解析任何字符串变成JS

//parse : 只能解析JSON形式的字符串变成JS  (安全性要高一些)

•     Eval一些植入木马,病毒等不安全的字符串也可以解析

 

/*var str = 'function show(){alert(123)}';

 

eval(str);

 

show();*///弹出123

 

/*var str = 'function show(){alert(123)}';

 

JSON.parse(str);

 

show();*///不成功

 

•     新方法的应用

–    深度克隆新对象

 

/*var a = {

name: 'hello'

};

 

var b = a;

 

b.name = 'hi';

 

alert( a.name );//hi

 

 

/*var a = {

name: 'hello'

};

 

var b = {};

 

for(var attr in a){

b[attr]= a[attr];

}

 

b.name = 'hi';

 

alert( a.name );*/ //hello 浅拷贝 

深拷贝还要涉及递归

 

// var a = {

//    name : { age : 100 }

// };

// var str = JSON.stringify(a);

// var b = JSON.parse(str);

// b.name.age = 200;

// alert( a.name.age );//100

 

•     如何其他浏览器做到兼容

–    http://www.json.org/去下载json2.js

 

 

data自定义数据

•     dataset

–    data-name :  dataset.name

–    data-name-first  :  dataset.nameFirst

–     

<script>

window.onload = function(){

varoDiv = document.getElementById('div1');

//alert(oDiv.dataset.miaov );

alert(oDiv.dataset.miaovAll );

};

 

</script>

</head>

 

<body>

<div id="div1" data-miaov="妙味" data-miaov-all="妙味课堂">div</div>

</body>

•     Data数据在jquery mobile中有着重要作用

 

<div data-role="page"id="div1">

    <divdata-theme="c"data-role="header">

       <h3>妙味课堂</h3>

   </div>

   <div data-role="context">

       <a href="#div2"data-transition="slide">点击</a>

   </div>

</div>

 

<div data-role="page"id="div2">

    <divdata-theme="b" data-role="header">

       <h3>妙味课堂-移动开发教程</h3>

   </div>

   <div data-role="context">

       <a href="#div1"data-transition="slide" data-direction="reverse">点击</a>

   </div>

</div>

 

 

延迟加载JS

•     JS的加载会影响后面的内容加载

–    很多浏览器都采用了并行加载JS,但还是会影响其他内容

•     Html5deferasync

–    defer : 延迟加载,会按顺序执行,在onload执行前被触发

–    只能对外部的起作用,对内联的是没有作用的。

–    async : 异步加载,加载完就触发,有顺序问题

–    并排执行谁先加载后,谁先执行,之间有依赖关系不适用

–    适用于独立的JS,互相不影响,比如广告

–    动态创建script标签,异步

 

<title>无标题文档</title>

<!--<script src="a.js"defer="defer"></script>

<script src="b.js"defer="defer"></script>

<script src="c.js"defer="defer"></script>-->

 

<script src="a.js" async="async"></script>

<script src="b.js" async="async"></script>

<script src="c.js" async="async"></script>

</head>

 

<body>

<img src="">

 

</body>

 

•     Labjs库(专门做异步的库)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值