首页 > 代码库 > 获取dom对象(2)
获取dom对象(2)
<html><head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>获取dom对象</title></head><body> <input name="btn1" type="button" value="http://www.mamicode.com/mybtn1" /> <input name="btn1" type="button" value="http://www.mamicode.com/mybtn2" /></body></html><script type="text/javascript"> //兼容ie浏览器测试 var console = console || {}; console.log = console.log || function(a){ alert(a); } /* getElementsByName(name); 该方法可以获取到name相同的dom对象集合. 因为name属性在文档中允许值相同,所以不管name的值在文档中是否唯一,返回的结果都是一个集合. 我们需要通过下标获取单个的dom对象. 例如:常见的单选框我都需要把name属性设置相同的值,让他们成为一组. */ /* 获取name=btn1的dom 写代码的时候需要注意这个接口是getElements,多了一个s,这也从命名上说明了返回值是多个. */ var btns = document.getElementsByName("btn1"); //输出对象的length值, console.log(btns.length);//2 //获取第一个dom对象 var btn1 = btns[0]; //输出btn1的value console.log(btn1.value);//mybtn1 /* 思考一下: 既然是通过类似数组方式获取数据,那么getElementsByName返回的是Array吗? */ /* 我们知道js的基础数据类型,是没有数组的. 这六种类型分别是: number,string,boolean,object,function,undefined 可能大家还能想到null,Array,Date,RegExp等,但是这都不是js的基础数据类型. 那怎么验证这六种数据格式呢,其实也很简单. 直接使用typeof运算符就可以得到,注意哦typeof只是一个一元运算符,不是函数. */ console.log(typeof 1);//number console.log(typeof "1");//string console.log(typeof true);//boolean console.log(typeof []);//object console.log(typeof {});//object console.log(typeof null);//object console.log(typeof function(){});//function console.log(typeof a);//undefined /* 可以看出使用typeof运算符只能得到6个类型,这就是js的基础数据类型了. */ /* 回到上面的问题,btns是什么类型呢? */ //使用typeof运算一下 console.log(typeof btns);//object /* 发现返回的结果也是object,但是数组typeof运算之后也是object. 所以通过typeof并不能判断. 那怎么办呢? 是的天无绝人之路,我们发现js还有一个运算符instanceof. instanceof运算符与typeof运算符差不多,用来判定对象的数据类型. 与typeof不同的是,instanceof能够明确地判定对象是否是某种类型的实例. */ //Array类型 console.log([] instanceof Array);//true //btns呢 console.log(btns instanceof Array);//false /* 通过判定得知,btns并不是Array类型,只是一个类似array的对象集合. 我也不知道这样描述对不对,感觉应该跟arguments很类似吧,是js中一种特有的对象,并且拥有length属性. 提一下instanceof返回值的只有true/false. */ /* 知识点: typeof运算符 instanceof运算符 其实instanceof还有更多更有意思用法. */ function testA(){}; var t = new testA(); console.log(t instanceof testA);// ? function testB(){}; testB.prototype = new testA(); var t2 = new testB(); console.log(testB.prototype instanceof testA);// ? console.log(t2 instanceof testA);// ? console.log(t2.prototype instanceof testA);// ?</script>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。