用 js 设定标签的样式,并解决语法兼容性的问题

news/2024/7/19 14:45:28 标签: javascript, js, 前端

设定标签的样式

1. 给标签设定样式

语法
标签对象.style.属性 = 属性值

2. 获取标签设定的样式

语法
标签对象.style.属性

实例

javascript">var oDiv = document.querySelector('div');
// 通过 标签对象.style.属性 = '属性值'
// 设定的是标签的行内样式
// oDiv.style.color = 'red';

// 获取样式

// 行内样式,正确获取
console.log( oDiv.style.color );
console.log( oDiv.style.background );
// 非行内样式,获取的结果是空字符串
console.log( oDiv.style.fontSize );

······································································································································

获取标签执行的样式属性

语法及兼容性

一般浏览器 值得是 非低版本IE浏览器方法(低版本IE会报错):
window.getComputedStyle(标签对象).属性

低版本IE浏览器方法(非低版本IE会报错):
标签对象.currentStyle.属性

注:获取的是标签最终执行的样式的属性值。如果是颜色,获取的是 rgb() 的形式。

实例

javascript">var oDiv = document.querySelector('div');

// 非低版本IE浏览器方法
console.log(window.getComputedStyle(oDiv).fontSize);
console.log(window.getComputedStyle(oDiv).color);

// 低版本IE浏览器方法
console.log(oDiv.currentStyle.fontSize);

不管行内还是非行内,获取的是,最终执行的样式属性值。
例如:外部样式,被行内样式优先级 覆盖,获取的结果,就是最终执行的 行内样式。

兼容处理方案

不能像之前,做 || 逻辑赋值,因为此时是JavaScript报错,会终止之后程序的执行。

javascript">// 不支持的浏览器会报错,影响之后的程序的执行
var res = window.getComputedStyle(oDiv).fontSize ||  oDiv.currentStyle.fontSize;

兼容处理方法是 使用 if判断 ,判断原理:

如果 window.getComputedStyle 这种方法没有,执行结果是 undefined  没有这个方法
如果 window.getComputedStyle 这种方法有,就会有一个返回值

操作过程:

if( window.getComputedStyle )

  如果 window.getComputedStyle 没有 结果是 undefined 
      if( undefined )  --->  if( false )
      就调用  标签对象.currentStyle.属性
  如果 window.getComputedStyle  有  结果是 有内容的
      if( 有内容 ) --->  if( true )
      就调用 window.getComputedStyle 这个方法
实例
javascript">var oDiv = document.querySelector('div');

if(window.getComputedStyle){
    // 支持 window.getComputedStyle 的会执行这里的代码
    // 一般浏览器会执行这里的代码
    var res = window.getComputedStyle(oDiv).fontSize;
}else{
    // 不支持 window.getComputedStyle 的会执行这里的代码
    // 低版本IE浏览器,会执行这里的代码
    var res = oDiv.currentStyle.fontSize;
}

console.log(123);

实际项目中,只有原生js,就是 最基础、最基本的js代码,才需要考虑兼容性
最后的其他js方法,例如 jQuery 和 框架 ,都会自动解决兼容问题,我们使用 jQuery和框架写项目时,都不用考虑兼容问题。


http://www.niftyadmin.cn/n/1110741.html

相关文章

js数组去重(多种写法)

最基本的写法 使用indexOf() var arr [1,1,5,77,32,54,2,4,5,2,2,4,52,2,2,2,2,2] //比较常规的语法使用indexOf来判断是否已经存在 getFileArray(arr) function getFileArray(arr){var array [];arr.forEach(e > {if(array.indexOf(e) ! -1){return;}else {array.push(e)…

全球第二个--红旗5 dvd 制作方法(windows用户适用)(转)

全球第二个--红旗5 dvd 制作方法(windows用户适用)(转)[more]转自红旗官方的:华中科大一学生tanhitzq的方法是在linux下制作,我的是windows下 1,下载红旗5的iso,ultraiso的破解版(必须破解&…

js获取元素占位之offsetLeft、offsetTop用法

offsetLeft offsetTop offsetLeft: 到定位父级左边界的间距。 offsetTop: 到定位父级上边界的间距。 规则 每一个标签对象,都有一个属性,叫 offsetParent ,表示这个标签的定位父级对象是谁。 我们先设定好标签的样式…

Spring在代码中获取bean的几种方式

方法一:在初始化时保存ApplicationContext对象 : ApplicationContext ac new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("userService"); //比如:在application.xml中配置&#xff1…

python之集合

1 # Author:yebo2 3 4 list1 [1,2,3,4,2,5,5,6]5 list1 set(list1) #集合有去重作用6 print(list1)7 list2 [4,5,6,7,8,9]8 list2 set(list2)9 list3 [1,3,5] 10 list3 set(list3) 11 12 print(list1.intersection(list2)) #交集 & 13 print(list1.union(list…

小妹求教!IPV6下的udp网络编程问题!(转)

小妹求教!IPV6下的udp网络编程问题!(转)[more]请教各位高手大哥,我以一个ipv6下的tcp客户端程序为基础,想改为udp客户端程序,因为对ipv6理解很浅,现编译完后有些问题解决不了,清大家帮我改改哪里…

SpringMVC的处理器参数绑定

SpringMVC的Controller支持绑定的参数如下: 1.HttpServletRequest:通过request对象获取请求信息 2.HttpServletResponse:通过response对象处理响应信息 3.HttpSession:通过session对象得到其中存放的对象 4.InputStream/Reade…

button标签与input标签的区别

button标签与input标签都有作为按钮的功能,那么它们之间到底有什么区别呢,实际项目中我们应该如何选择呢?,下面我们就来具体了解一下: input标签 作为按钮,有3种 type 效果: 1. 提交按钮 点击…