H5我爱编程

prop&attr

2018-05-26  本文已影响20人  强某某

checkbox

 <input type="checkbox" checked='checked'>

说明:多选框中的checked属性除非不写,不然不论赋什么值,还是不写值,都代表选中。

attribute

html的预定义属性和自定义属性


input标签:针对的html
所以如上:checked是input标签的attribute


property

js原生对象的直接属性
每一个预定义的attribute都会有一个property与之对应


input节点:针对的是js
所以如上:checked是input节点的property


布尔值属性和非布尔值属性

<body>
    <input type="checkbox" checked='checked' name='zq'>
</body>
</html>
<script>
    //此时checked属性就是布尔值属性
    //name属性就是非布尔值属性
    //   布尔值属性:property的属性值是布尔值类型
    //   非布尔值属性:property的属性值是非布尔值类型
    //非布尔值属性:不论什么情况property和attribute都会同步
    //布尔值属性:1.改变property不会同步修改attribute
    //2.在没有动过property时,attribute会同步property,一旦动过property
    //attribute不会同步property
var zq=document.querySelector('input[type=checkbox]');
//修改attribute
zq.setAttribute("name","zq1");
//修改property
zq.name='zq2';

//浏览器只认property,用户操作的是property
</script>

属性使用attr还是prop的区分图

prop&attr.png

能使用attribute尽量使用attribute,性能高。

基本案例:

此时只有在第一次点击全选才有效,如果一旦第一次点击操作过property则全选无效,例如此时的水果三个全部手动选中,都是操作property,则在点击全选无效。如果在html全部给水果加上checked属性就相当于操作了property,此时即使第一次点击全选也无效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>H5</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <input type="checkbox" >苹果
    <input type="checkbox" >栗子
    <input type="checkbox" >香蕉
    <input type="button" id="CheckAll" value="全选">
</body>
</html>
<script>
  $(function(){
      $("#CheckAll").click(function(){
          $(":checkbox[type=checkbox]").attr("checked",true);
      })
  })
</script>

对比案例:

checked属性是布尔值属性,如果使用操作property则一直有效

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>H5</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <input type="checkbox" >苹果
    <input type="checkbox" >栗子
    <input type="checkbox" >香蕉
    <input type="button" id="CheckAll" value="全选">
</body>
</html>
<script>
  $(function(){
      $("#CheckAll").click(function(){
          $(":checkbox[type=checkbox]").prop("checked",true);
      })
  })
</script>
上一篇下一篇

猜你喜欢

热点阅读