加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

JavaScript通过元素id和name直接获取元素的技巧

发布时间:2021-12-10 13:42:29 所属栏目:PHP教程 来源:互联网
导读:概览: 偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用。 虽然说这种用法不是标准用法,推荐使用 document.getElementById(id);document.g

概览:
 
偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用。
 
虽然说这种用法不是标准用法,推荐使用 document.getElementById(id);document.getElementByName(name); ,但也是一种新发现,先记录下来,以备后用。
 
本文讲述了JavaScript通过元素id和name直接获取元素的方法,以及自己在实践过程中总结的注意事项。
 
具体分析如下:
 
我们知道一些第三方的js库对如何快速选取html中的元素做了一些简化,貌似十分高深莫测,其实也不然。而且js本身自带了对于特殊元素的简便选取的方法,下面就为大家简单介绍下。
 
在html中,一般最直接的辨别html元素使用的是name和id属性,两者有着细微的不同:id必须页面唯一,但name可以有重复。
 
在js中如果id名称不和内置属性或全局变量重名的话,该名称自动成为window对象的属性,而在一个html页面中的最顶层环境中有: this === window .
 
所以如果我们写一个如下的html元素代码:
 
1 <input type="button" id="btn_ok" value="Ok" onclick="..." />
就可以这样引用它:
 
1 //可以这样引用
2 btn_ok.onclick = function(){};
3 //或者下面也是一样的
4 window.btn_ok.style = ...;
对于name属性来说,只有某些类型的html元素具有类似的方法,比如:form,img,iframe,applet,embed,object等。在这些元素中可以通过全局变量或者document的属性来访问特定name属性的元素;如果相同name属性的有多个元素,则返回一个NodeList的类似只读数组的对象,例如如下代码:
 
1 <div>
2   <img name="pic" src="#" alt="pic_0" />
3   <img name="pic" src="#" alt="pic_1" />
4   <img name="pic" src="#" alt="pic_2" />
5 </div>
我们可以这样引用name为pic的元素:
 
1 //我们可以这样引用name为pic的元素:
2 for(x in pic)
3  console.log(pic[x].alt);
4 //或者是非"标准"语法each语句方式
5 for each(img in pic)
6  console.log(img.alt);
其他同行的观点:
①这个最初是 IE 里面的,后来 firefox chrome 好像也支持了。不建议使用,这个不是标准里面的,将来不一定支持。
 
②可以直接这样写的id.style.display="inline";使用id相当于直接成为了window对象的属性,使用window.id可以获取,但是不推荐这种写法,还是用getElementById或者querySelector好。
 
③getElementById getElementByTagName等方法都是DOM Core的组成部分,并不专属于js,支持DOM的任何一种程序设计语言都支持他们,比如XML编写出来的文档。还有HTML-DOM,比如onclick属性,他们在DOM Core出现很久之前就为人们所熟悉了。你举的这个例子就是属于HTML-DOM,比如,我们可以把下面的语句:document.getElementById('form')简化为 document.form,类似的element.getAttribute('src')简化为element.src.HTML-DOM通常更短,但是只能用来处理web文档。
 
我在实践过程中发现的问题:
 
①在HTML元素属性如onclick的JavaScript中直接用id获取元素没有问题;
 
②在<script></script>内的JavaScript中直接使用id获取元素:如果被引用HTML元素在form窗体标记内,解析用id获取的元素时报异常undefined;如果被引用HTML元素不在form窗体标记内,则解析没有问题。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读