一:属性和属性节点介绍
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> <script type="text/javascript"> $(function () { /* 1:什么是属性 对象身上保存的变量 2:如何操作属性 对象.属性名称=值 对象.属性名称; 对象["属性名称"]=值 对象["属性名称"] 3:什么是属性节点 <span name="666"></span> 在编写Html代码时,在HTML标签中添加的属性就是属性节点 在浏览器中找到span这个DOM元素之后,展开看到的都是属性 在attributes属性中保存的所有内容都是属性节点 4:如何操作属性节点 DOM元素.setAttribute("属性名称","值"); DOM元素.getAttribute("属性名称"); 5:属性和属性节点有什么区别 任何对象都有属性,但是只有DOM对象才有属性节点 */ function Person() {} var p = new Person() p.name = "xzx"; console.log(p.name); p["age"] = 21; console.log(p["age"]); var span = document.getElementsByTagName('span')[0] span.setAttribute("name", "ss"); console.log(span.getAttribute("name")); }) </script> </head> <body> <span name="666"></span> </body> </html>
二:操作属性节点的方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> <script type="text/javascript"> $(function () { /* 1:attr(name|pro|key,val|fn) 作用:获取或者设置属性节点的值 可以传递一个参数,也可以传递两个参数 如果传递一个参数,代表获取属性节点的值 如果传递两个参数,代表设置属性节点的值 注意点: 如果是获取:无论找到多少个元素,都只会返回第一个元素指定的属性节点的值 如果是设置:找到多少个元素就会设置多少个元素 如果是设置:如果设置的属性节点不存在,系统会自动新增 2:removeAttr(name) 作用:删除属性节点 注意点:会删除所有找到元素指定的属性节点 如果删除两个,空格隔开 */ console.log($("span").attr("class")); $("span").attr("class", "box"); $("span").attr("class", "box"); $("span").attr("abc", "123"); $("span").removeAttr("class"); $("span").removeAttr("class name"); //删除两个 }) </script> </head> <body> <span class="span1" name="s1"></span> <span class="span2" name="s2"></span> </body> </html>
三:操作属性的方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> <script type="text/javascript"> $(function () { /* 1:prop方法 特点和attr方法一致 2:removeProp方法 特点和removeAttr方法一致 */ $("span").eq(0).prop("demo", "span01"); //eq里是第0个eq $("span").eq(1).prop("demo", "span02"); console.log($("span").prop("demo")); //只获取第一个 $("span").removeProp("demo"); // 注意点:prop方法不仅能够操作属性,它还能操作属性节点 console.log($("span").prop("class")); $("span").prop("class", "box"); }) </script> </head> <body> <span class="span1" name="s1"></span> <span class="span2" name="s2"></span> </body> </html>
四:该如何选择attr还是prop
官方推荐在操作属性节点时,具有true和false两个属性的属性节点,例如:checked,selected或者disabled 使用prop(),其他的使用attr()
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> <script type="text/javascript"> $(function () { console.log( $("input").prop("checked")); console.log( $("input").attr("checked")); }) </script> </head> <body> 选中:<input type="checkbox" checked> <!-- 没选中:<input type="checkbox" > --> </body> </html>
五:attr小应用
也可以用prop,但是因为节点属性不是true和false,所以推荐用attr
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script> <script type="text/javascript"> $(function () { //还没学的用js写 //给按钮添加点击事件 var btn=document.getElementsByTagName('button')[0]; btn.onclick=function(){ //获取输入框输入内容 var input=document.getElementsByTagName('input')[0]; var text=input.value; //修改Img的src属性节点的值 $("img").attr("src",text) } }) //input里面输入:http://b159.photo.store.qq.com/psb?/V13fa3kk1tXuy2/EsKE3sFY5UHa98ZhFRJ*sv3axq6i2g2Md3.xPwY0n6E!/b/dJ8AAAAAAAAA&bo=oAU4BDgEoAURCT4!&t=5&t=5&t=5&t=5&w=384&h=288&rf=travel&t=5 </script> </head> <body> <input type="text"> <button>切换图片</button><br> <img src="http://a2.qpic.cn/psb?/V13fa3kk0zUpc8/QlcoUWIygp3PwcRgvPQ*r6fl8DG1NvT2t4ec2CvqPDw!/b/dNEAAAAAAAAA&bo=oAU4BDgEoAURCT4!&t=5&w=557&h=418&rf=travel&t=5" alt="" style="width: 350px;height: 300px;"> </body> </html>