原生JavaScript支持6种方式获取元素
一、原生JavaScript支持6种方式获取元素
- document.getElementById('id');
- document.getElementsByName('name');
- document.getElementsByTagName('tag');
- document.getElementsByClassName('className');
- document.querySelector("#id");
- document.querySelector(".className");
- document.querySelector("p");
- document.querySelectorAll("div");
二、getElementsByClassName的兼容性问题
非IE6,7,8可以直接用自带的属性getElementsByClassName,如果需要考虑兼容,就需要自己写了。
比如实现点击class="click-enable"的td时,分别打印该td中数字的整数和小数部分,尝试用js实现,考虑兼容性。
大概思路,是将你要获取class元素父级下的所有元素都取出来,再循环查找className,满足的元素存到数组中,然后返回。
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>原生JavaScript获取类名</title>
- </head>
- <body>
- <table id="list">
- <tr>
- <td class="click-enable">1.1</td>
- <td>1.2</td>
- <td class="click-enable">1.3</td>
- <td>1.4</td>
- </tr>
- <tr>
- <td class="click-enable">2.1</td>
- <td>2.2</td>
- <td class="click-enable">2.3</td>
- <td>2.4</td>
- </tr>
- <tr>
- <td class="click-enable">3.1</td>
- <td>3.2</td>
- <td class="click-enable">3.3</td>
- <td>3.4</td>
- </tr>
- </table>
- <script type="text/javascript">
- window.onload = function () {
- var tagName = getClassName("list", "click-enable");
- for(var i=0;i<tagName.length;i++){
- var kk=tagName[i].innerHTML;
- var bb=kk.split('.');
- var x=bb[0];
- var y=bb[1];
- document.write("整数部分:"+x+" 小数部分:"+y+'</br>');
- }
- }
- function getClassName(oParent, className)
- {
- var oParent = oParent ? document.getElementById(oParent) : document;
- //判断浏览器是否支持getElementsByClassName,如果支持就直接用。
- if (document.getElementsByClassName){
- return oParent.getElementsByClassName(className);
- }else{
- var aEle = oParent.getElementsByTagName('*'); //获取指定元素
- var arr = []; //这个数组用于存储所有符合条件的元素
- for(var i = 0; i < aEle.length; i++){ //遍历获得的元素
- if (aEle[i].className == className){
- //如果获得的元素中的class的值等于指定的类名,就赋值给tagnameAll
- arr[arr.length] = aEle[i];
- //方法2:arr.push(aEle[i]);
- }
- //方法3
- //if(aEle[i].className.indexOf(className) != -1){
- // arr[arr.length] = aEle[i];
- //}
- }
- return arr;
- }
- }
- </script>
- </body>
- </html>
三、querySelectorAll的兼容性问题
querySelector和querySelectorAll方法是 W3C Selectors API 规范中定义的。他们的作用是根据CSS 选择器规范,便捷定位文档中指定元素。但ie6,ie7不支持。
- if (!document.querySelectorAll) {
- document.querySelectorAll = function (selectors) {
- var style = document.createElement('style'), elements = [], element;
- document.documentElement.firstChild.appendChild(style);
- document._qsa = [];
- style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';
- window.scrollBy(0, 0);
- style.parentNode.removeChild(style);
- while (document._qsa.length) {
- element = document._qsa.shift();
- element.style.removeAttribute('x-qsa');
- elements.push(element);
- }
- document._qsa = null;
- return elements;
- };
- }
- if (!document.querySelector) {
- document.querySelector = function (selectors) {
- var elements = document.querySelectorAll(selectors);
- return (elements.length) ? elements[0] : null;
- };
- }
或者
- function getId(strid){
- if ('querySelector' in document) {
- document.querySelector("#" + strid);
- } else {//IE6
- document.getElementById(strid);
- }
- }
原生JavaScript支持6种方式获取元素的更多相关文章
- 原生js获得八种方式,事件操作
08.17自我总结 关于js 一.原生js获得八种方式 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTa ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
- 不使用spring的情况下原生java代码两种方式操作mongodb数据库
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-003-四种方式获取DataSource
一.概述 1.Spring offers several options for configuring data-source beans in your Spring application, i ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- nginx的upstream目前支持5种方式的分配(转)
nginx的upstream目前支持5种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight ...
- nginx的upstream目前支持5种方式的分配
Nginx nginx的upstream目前支持5种方式的分配 FROM: 转载 1 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器, 如果后端服务器down掉, 能自动剔除. 2 w ...
- css点滴1—八种方式实现元素垂直居中
这里介绍实现元素垂直居中的方式,文章是参考了<css制作水平垂直居中对齐>这一篇文章. 1.行高和高度实现 这种方式实现单行垂直居中是很简单的,但是要保证元素内容是单行的,并且其高度是不变 ...
- 让浏览器非阻塞加载javascript的几种方式
通常大多数浏览器是并行下载资源的,但由于外部脚本的特殊性例如通过脚本改变文档的DOM结构.脚本之间的存在依赖关系.使用document.write 向页面输出HTML等.浏览器为了确保正确执行脚本和呈 ...
随机推荐
- 【ES】学习9-聚合2
按时间统计:date_histogram GET /cars/transactions/_search { , "aggs": { "sales": { &qu ...
- WEB漏洞 XSS(一)
1.xss的形成原理 xss 中文名是“跨站脚本攻击”,英文名“Cross Site Scripting”.xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML ...
- Git使用五:回到过去
reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区 下面是之前三次提交的内容 三个区域的文件状态: 执 ...
- linux安装python3+selenium
安装笔记 当前安装使用centos7 安装python3 1.下载 [admin@ ~] wget https://www.python.org/ftp/python/3.6.0/Python-3.6 ...
- 51 NOd 1459 迷宫游戏 (最短路径)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
- What is base..ctor(); in C#?
I am disassembling some C# applications and I am trying to reconstruct the source code. I am disasse ...
- caffe调loss方法
正文 what should I do if... ...my loss diverges? (increases by order of magnitude, goes to inf. or NaN ...
- android开发默认图标怎么换?
首先要在资源文件放入想换的图标图片拖到drawable-XX文件夹下, 然后打开AndroidManifest.xml这个配置清单文件找 到application标签里的这句android:icon= ...
- WebApi服务以及跨域设置
WCF 它利用TCP.HTTP.MSMQ等传输协议构建“契约先行”的服务.WCF最初为基于SOAP的服务而设计[xml],繁琐.冗余.慢.沉重 WebApi 基于http协议,轻量级的,支持URL路由 ...
- rabbitmq更换数据文件和日志文件的存放位置
原来的默认位置是/var下 需要将这些文件更换位置 1.先创建数据文件和日志文件存放位置的目录并给权限 mkdir -p /usr/local/rabbitmq/mnesia mkdir -p /us ...