第二十六节:class和焦点的操作管理

2023-11-09

1、关于class的操作

IE9以下的getElementsByClassName()方法兼容问题

//<p>Hello World</p>
//<p class="a">增加样式 World</p>
//<ul id="ul"></ul>
function getClass(classA){
	if (document.getElementsByClassName) {
	        return document.getElementsByClassName(classA)
	}else{
	    //兼容IE9一下
		var getClassArr=[];
		var nodeArr=document.getElementsByTagName('*');
		for(let i=nodeArr.length-1;i>=0;i--){
			if(nodeArr[i].className.indexOf(classA)>=0){
				getClassArr.push(nodeArr[i]);
			}
		}
		return getClassArr;
	}
}
console.log(getClass('a')[0].innerText);

注意:
1、以上兼容方法性能会下降
2、getElementsByClassName()得到的为HTMLCollection动态合集,自己写的兼容方法为一个数组,不是动态合集。
3、通过ID获取DOM节点比通过Class获取节点

HTML DOM classList 属性

classList 属性返回元素的类名;作为 DOMTokenList 对象。该属性用于在元素中添加,移除及切换 CSS 类。classList 属性是只读的,但你可以使用 add() 和 remove() 方法修改它

//HTML
//<div id="bar" class="ceshi class1"></div>
var bar=document.getElementById('bar');
//添加类
bar.classList.add('xinzeng','xinzeng2');
//移除类
bar.classList.remove('class1','xinzeng2');
console.log(bar.classList.contains('fc_black'));//false
console.log(bar.classList.contains('ceshi'));//true
console.log(bar.classList.item(1));//xinzeng

注意:
当增加多个类时,会将所有class增加完成后,一次进行渲染;而非多次渲染。因为渲染器和解释器是只能一个在工作,所以先一次性渲染完成。

//<style>
//.bg_color{ background:#ff0;}
//.fc_red{ color:#f00;}
//.fc_green{ color:green;}
//</style>
//<button onclick="clickToggle()">toggle</button>
//<button onclick="clickToggle(1)">红色</button>
//<button onclick="clickToggle(2)">绿色</button>
//<div id="bar" class="ceshi class1">测试</div>
<script>
function clickToggle(type){
	var bar=document.getElementById('bar');
	if(type==1){
		bar.classList.toggle('fc_red',true);
		bar.classList.toggle('fc_green',false);
	}else if(type==2){
		bar.classList.toggle('fc_red',false);
		bar.classList.toggle('fc_green',true);
	}else{
		bar.classList.toggle('bg_color');
	}
}
</script>

2、关于焦点的操作

activeElement 属性返回文档中当前获得焦点的元素
为元素设置焦点,可以使用 element.focus() 方法
可以使用 document.hasFocus() 方法来查看当前元素是否获取焦点

//<body onclick="clickElement()">
//<button>toggle</button>
//<button>红色</button>
//<button>绿色</button>
//<input type="text" placeholder="请输入内容" />
//<p>1111</p>
//</body>
<script>
window.onload = function(){
	var x = document.activeElement.tagName;
	console.log(x);  //页面刚加载完,获取焦点的元素为BODY,如果未加载完,x为null
}
function clickElement(){
	var x = document.activeElement.tagName;
	console.log(x); //点击页面上的其他元素,则会返回对应的元素标签,button和input则返回BUTTON和INPUT,其他则返回BODY
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二十六节:class和焦点的操作管理 的相关文章

  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • Jasmine 条件 callThrough 和 callFake

    我有一个返回函数引用的方法 function methodetobeMoked param case1 return func1 case 2 return func2 case n return funcN 我需要监视这个方法并返回特定输
  • 使用 jquery 淡入/淡出

    我正在研究我的学生项目 我是新的 jquery 对于该项目 我必须使用 jquery 来增强一些功能 并且我已经学到了很多来执行基本任务 但我陷入了一些非常令人困惑的事情 我的一个脚本实际上在鼠标悬停在功能上时更改了 div 容器的图像 功
  • 如何让 Google Apps 脚本进行 SHA-256 加密?

    我需要使用文本输入 1 轮 十六进制输出 SHA 256 加密来加密字符串 这应该是一个长度为 64 的字符串 我在 Google Apps 脚本文档中尝试过的每个 SHA 256 加密模块都会返回一组数字 例如 function SHA2
  • 使用智能菜单jquery打印json

    menu name Computers children name Notebook children name Apple name Windows name Tablets children name Apple name Androi
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • 如何在React-Native中选择ListView的一项?

    我是 React Native 的新手 我想使用 ListView 选择一项 当我第一次按下 item 时 ListView renderRow 被调用 但终究不起作用 我该如何修复这个错误 我的问题出在哪里 我写了一个演示here htt
  • 如何根据另一个动态下拉列表的值创建动态下拉列表?

    我有一个下拉菜单 当我选择一个选项时 它会创建一个动态下拉菜单 到目前为止 一切都很好 但我想创建另一个动态下拉列表 现在基于另一个动态下拉列表的值 我该怎么做 第一个动态下拉列表有效 我猜第二个无效 因为动态变量 div 没有静态 ID
  • 如何使用 console.log 省略文件/行号

    如今 您可以在 Chrome 的控制台中编写非常好的东西 查看this https developer chrome com devtools docs tips and tricks关联 我也做了一个截图 正如您在屏幕截图中看到的那样 文
  • 获取 pdf 第 1 页(共 2 页)的图像

    我正在使用 html2canvas 和 jsPDF 以及 Angular4 创建图像 我想将此图像放置在 2 页生成的 pdf 的第 1 页上 但似乎这条线 doc save test pdf 需要在函数内部htm2canvas 因为如果我
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • toJSON() 和 JSON.Stringify() 之间的区别

    如果您需要读取或克隆模型的所有数据属性 请使用其 toJSON 方法 此方法返回属性的副本作为 对象 尽管有其名称 但不是 JSON 字符串 当 JSON stringify 为 使用 toJSON 方法传递一个对象 它将返回的字符串化 t
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • Webpack:如何将 javascript 注入 HTML 而不是单独的 JS 文件

    有没有办法让 webpack 将输出注入 HTML 而不是单独的文件 我不得不使用html webpack inline source plugin https github com DustinJackson html webpack i
  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • .parents() 没有 jquery - 或 querySelectorAll 为父母[重复]

    这个问题在这里已经有答案了 可能的重复 使用 matchesSelector js 检查 event target parentElement https stackoverflow com questions 12977658 check
  • 在 Sublime Text 下获取完整的 JS 自动补全

    我刚刚在 Windows Vista 下安装了 Sublime Text 甚至遵循了中给出的建议这个帖子 https stackoverflow com questions 10636410 modifying sublime text 2
  • 保留对 React 状态变量的“引用”

    据我所知 Javascript 中没有指针 我有以下问题 但我想知道是否有一个解决方案让我无法解决 解决方案可能是普通的 Javascript 或者像 Context API 这样的 React js 钩子 useContext 或者更多
  • Chrome 中的 addEventListener

    我正在关注 Lynda com 上有关新 DOM 事件模型的教程 这是我正在使用的代码 function addEventHandler oNode sEvt fFunc bCapture if typeof window event un
  • 调试客户端时使用 Chrome/Firefox

    我正在使用带有 getUserMedia 的相机 但出现了一些需要修复的错误 问题是 Visual Studio 只允许我使用 IE 调试 JavaScript 我的意思是命中断点 而 IE 不支持 getUserMedia 如果您想在 I

随机推荐

  • 灰度图像直方图均衡化公式及实现

    图像的直方图 直方图是图像中像素强度分布的图形表达方式 它统计了每一个强度值所具有的像素个数 直方图均衡化 是通过拉伸像素强度分布范围来增强图像对比度的一种方法 是图像处理领域中利用图像直方图对对比度进行调整的方法 均衡化指的是把一个分布
  • 华为手机发展史

    一 成立手机业务部 大家好 我是小码哥 今天我们来聊一下华为手机的发展史 作为国内乃至世界技术成熟大型互联网企业 已经成为国内市场不可缺失的一部分 华为由任正非在1987年创办的 至今已有34年 华为最初是做交换机起家 随着互联网的发展 华
  • 对象数组(初学)

    目录 一 什么是对象数组 二 定义对象数组 三 对象数组初始化 四 访问对象数组元素 五 new和对象数组 一 什么是对象数组 所谓对象数组 指每一个数组元素都是对象的数组 即若一个类有若干个对象 把这一系列的对象用一个数组来存放 对象数组
  • 关闭httpclient4.5控制台日志输出

    httpclient4 5每次执行的时候都会在控制台输出大量日志 一般情况下并不需要 去官方看了 没找到去掉日志的方法 囧 官网链接 https hc apache org httpcomponents client 4 5 x loggi
  • 2020-09-07

    使 mqtt fx连阿 云时 直提 MQTTException 最近在搞一个Mqtt项目 在用mqtt fx工具做测试时怎么都连接不上阿里云 直提 MQTTException 记得之前也都是可能的 操作好像都是按照官方的文档来操作的 密码也
  • RX8025T RTC读写与秒中断

    目录 一 精度 二 读写时序 三 写RTC对其内部ms计数的影响 四 在FPGA中用GPS校正RTC 五 ms维护 六 IIC防锁死计数清零 七 日期计算星期公式 一 精度 二 读写时序 接口为IIC 读写时序如下图 注意 1 写操作 写从
  • PHP常见问题总结

    1 为什么会出现这种情况 端口什么的都设置正确了 解决方法 请将本机的IIS服务关闭 开启Apache服务 IIS服务的关闭方法可参见 https jingyan baidu com article 0f5fb099e0d7216d8334
  • 理解JPEG文件头的格式

    1 JPEG 1 why jpeg jpeg作为图片传输格式使用最为普遍 压缩比最高 每天我们都会产出和传输大量的jpeg格式数据 手机拍出来的格式默认是jpeg 朋友圈各种分享 磁盘上积累了大量的jpeg 因此本人一直对jpeg头部数据非
  • CLIP:创建图像分类器

    介绍 假设需要对人们是否戴眼镜进行分类 但是没有数据或资源训练自定义模型 在本教程中 你将学习如何使用预训练的CLIP模型创建自定义分类器 无需任何训练 这种方法称为零快照图像分类 它使得能够对在原始CLIP模型训练期间未明确观察到的的类进
  • 并发基础知识(二)[进程间通信·信号]

    1 信号 信号是进程间通信的一种方式 这种方式没有数据传输 只是在内核中传递一个信号 整数 信号的表示是一个整数 不同的信号值 代表不同的含义 当然用户可以自定义信号 那么自定义的信号的含义和值由程序员来定和解释 Term Terminat
  • DVWA-15.Open HTTP Redirect

    OWASP将其定义为 当 Web 应用程序接受不受信任的输入时 可能会导致 Web 应用程序将请求重定向到不受信任输入中包含的 URL 则可能会出现未经验证的重定向和转发 通过修改恶意站点的不受信任的 URL 输入 攻击者可以成功发起网络钓
  • OpenGL ES基本流程总结

    作为一个学习总结 绘制了OpenGL ES中完成一次渲染所需要的一些基本步骤 离屏渲染 此处是以离屏渲染为例 离屏渲染是不直接上屏的 而是渲染到缓冲区中 那么这块缓冲区就需要我们手动创建 也就是上图所示的Framebuffer 其中需要三个
  • 车载以太网入门

    车载以太网入门 以太网的首要优势之一在于支持多种网络介质 因此可以在汽车领域进行使用 同时由于物理介质与协议无关 因此可以在汽车领域可以做相应的调整与拓展 形成一整套车载以太网协议 该协议将会在未来不断发展并长期使用 车载以太网总体架构 正
  • spring事务传播机制使用及原理

    事务 事务是逻辑上的一组操作 要么都执行 要么都不执行 事务的四大特性 原子性 构成事务的所有操作 要么都执行完成 要么全部不执行 不可能出现部分成功部分失 败的情况 一致性 在事务执行前后 数据库的一致性约束没有被破坏 隔离性 数据库中的
  • Games104 引擎工具链笔记

    一 GUI体系 1 Immediate Mode 比如UnityUGUI 优点 直接快速 缺点 逻辑比重大 2 Retained Mode 把要绘制的指令存到一个buffer中 统一绘制 优点 把游戏逻辑和UI渲染分开 扩展性强 例子 Un
  • StackOverflow 这么大,它的架构是怎么样的?

    伯乐在线补充 Nick Craver 是 StackOverflow 的软件工程师 网站可靠性工程师 这是 解密 Stack Overflow 架构 系列的第一篇 本系列会有非常多的内容 欢迎阅读并保持关注 为了便于理解本文涉及到的东西到底
  • QT5:VS创建的QT项目头文件标红和控件对象无法调用

    最近使用VS QT编写代码 除了界面和调试比较舒服以外 感觉的很不习惯 小问题不断 问题1 解决方法 1 系统环境变量中添加bin路径 2 属性配置中添加包含目录和库目录 问题2 上面这个问题 会导致ui调用不了添加的控件对象 搞到怀疑人生
  • SourceTree使用教程(七)--合并某次提交

    概述 在Git的实际使用场景中 未必都是很规矩的拉一个分支 开发一个功能 等功能测试完成后 合并到主分支 有很多的场景都是很多人在同一个开发分支上开发 然后按照上线的实际需要 依次去上传自己的功能模块 这个功能模块的提交记录很可能是交叉提交
  • vasp-自旋轨道耦合(SOC)计算步骤

    在VASP中执行自旋轨道耦合 SOC 计算 具体的计算步骤如下 结构优化获取CONTCAR文件 自洽计算 collinear normal VASP calculations 获取CHGCAR文件 能带结构计算 在此步骤中 将KPOINTS
  • 第二十六节:class和焦点的操作管理

    1 关于class的操作 IE9以下的getElementsByClassName 方法兼容问题 p Hello World p p class a 增加样式 World p ul ul function getClass classA i