JavaScript修改DOM节点时,样式优先级的问题
通过element.style.xxx设置或者读取的xxx样式属性,都是属于行间样式(<p style="color=red"></p>),并不是 使用link的外部css文件 或者 在<style></style>标签中定义的样式
样式优先级: * < tagName < class < id < 行间(行间样式就是写在标签内)
下面这个代码中
<html>
<head>
<style>
#div1{ width:100px; height:100px; border:1px solid blue;}
.red{ background-color: red }
</style>
</head>
<body>
<div id="div1"></div>
<button onclick="changeToRed()">变红</button>
<button onclick="changeToYellow()">变黄</button>
</body>
<script>
function changeToRed(){
var div1 = document.getElementById("div1");
div1.className = "red";
}
function changeToYellow(){
var div1 = document.getElementById("div1");
div1.style.backgroundColor = "yellow";
}
</script>
</html>
观察div的状态变化:
初始状态为 <div id="div1"></div> 此时div内部为白色;
先点击变红之后,变为 <div id="div1" class="red"></div> 此时div内部为红色;
再点击变黄 ,变为 <div id="div1" class="red" style="background-color: yellow;"></div>,此时div内部颜色变为黄色,此时黄色为行间样式,会覆盖掉通过class或者id设置的同一个属性(background-color)样式。
刷新浏览器,改变顺序:
初始状态为 <div id="div1"></div> 此时div内部为白色;
先点击变黄 ,变为 <div id="div1" style="background-color: yellow;"></div>,此时div内部颜色变为黄色,此时黄色为行间样式
再点击变黄之后,变为 <div id="div1" style="background-color: yellow;" class="red"></div> 此时div内部为仍为黄色,这是因为后添加的class属性优先级没有上一步添加的行间属性的优先级高,所以不起作用。
建议:
如果出现这种情况,非常头疼,因为不报错,所以很难查找
所以,尽量对同一个元素,更改样式属性的时候,只是用一种方法,要么只使用element.style.xxx,要么只是用element.className='xxx'。
JavaScript修改DOM节点时,样式优先级的问题的更多相关文章
- JS 操作Dom节点之样式
为了提高用户体验,我们经常会动态修改Dom节点的样式,各种浏览器差异比较大,我们如何应对?不断尝试,不断总结~! 1. style.getComputedStyle.currentStyle 内嵌样式 ...
- JavaScript操作DOM节点
DOM (文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网 ...
- JavaScript HTML DOM 节点
要向HTML DOM添加新元素,必须首先创建元素(元素节点),然后将其附加到现有元素. <!DOCTYPE html> <html> <meta charset=&quo ...
- 前端JavaScript之DOM节点操作
1.HTML DOM是啥 Document Object Model:定义了访问和操作HTML文档的标准方法,把HTML文档呈现为带有元素,属性和文本的树状结构 2.解析过程 HTML加载完毕,渲染引 ...
- 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)
getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...
- javascript与DOM节点的结合使用
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象 ...
- 【Javascript】 DOM节点
HTML文档中一切都是节点! 整个文档是文档节点: 注释是注释节点: 每一个HTML元素都是一个元素节点: 元素内的文本内容是文本节点: 连元素的每一个属性都是一个属性节点. 看到这些是不是感觉很熟悉 ...
- JavaScript中DOM节点层次Text类型
文本节点 标签之间只要有一点内容都会有文本节点,包括空格 创建文本节点document.createTextNode() 可以使用 document.createTextNode 创建新文本节点 == ...
- javascript 插入DOM节点
1.使用appendChild,把一个子节点添加到父节点的最后一个子节点,.innerText插入的是内容 HTML <!-- HTML结构 --> <p id="js&q ...
随机推荐
- IEEE754浮点数的表示方法
https://blog.csdn.net/K346K346/article/details/50487127
- 表单取消历史保存之autocomplete的用法
表单取消历史保存之autocomplete的用法 应用场景 浏览器开启了表单自动填充设置后,有些表单中的input元素在添加时会以下拉的形式显示以前填写过的表单,有时候可能会影响用户的使用.比如:da ...
- VS快捷键失效问题
VS作为宇宙最强IDE,为我们提供了强大的快捷键组合,熟练的使用这些快捷键能极大提高我们的编码效率,但是在我们实际使用的过程中经常会遇到某个快捷键组合失效的问题. 问题原因: 一般都是VS的快捷键与电 ...
- 《Java大学教程》—第9章 软件质量
软件质量:可维护性.可靠性.健壮性.可用性. 9.3 可维护性系统维护(maintaining)是指根据需求的变化更新现有系统的过程 9.3.1 封装的重要性连锁反应:对系统某一部分的改变可能会 ...
- 【Teradata】tdlocaledef修改默认日期配置
如下所有操作需要使用root登录到TD数据库节点操作 1.获取数据库当前默认配置 //使用root登录TD数据库节点 cd /opt/teradata/tdat/tdbms/xx.xx.xx.xx/b ...
- shopkeep/spark Dockerfile示例
FROM java:openjdk- ENV HADOOP_HOME /opt/spark/hadoop- ENV MESOS_NATIVE_LIBRARY /opt/libmesos-.so ENV ...
- vue-引入外部js文件的方法和常量
1.方法调用 a: js文件(static/js/public.js) //函数的定义 返回上一页 export function goback(laststep) { laststep } b: ...
- nginx如何安装第三方模块
以安装pagespeed为实例 在未安装nginx的情况下安装nginx第三方模块 # ./configure --prefix=/usr/local/nginx-1.4.1 \ --with-htt ...
- pyspider环境部署1--python3安装
爬虫是一个既好玩又好用的东西,接触它有1年多了,了解一些,算不上精通.爬过新闻.微信公众号,主要用pyspider,scrapy也了解过,python2和3都尝试过.公司业务规模不大,基于 pytho ...
- HyperLedger Fabric 1.0的Transaction处理流程
如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作.以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为 ...