HTML标签内属性——尤其class属性(整理)
2014-11-11 13:09
141 查看
通过两行代码来看a元素的属性:class,href,title,style,id,lang等
1、object.xxx
2、object["xxx"] //此条是1的变体,可以看做是等价的
3、object.getAttribute("xxx")
但是在访问中存在兼容问题,大概可以划分为两类问题:
A、属性的兼容:id、class、href、title、style、hidden等属性并非都可以用1,2,3这三个方案访问;
[b]B、浏览器的兼容:并非所有的浏览器都内置了这三个方法。[/b]
对class属性的进一步探讨:
1-1、className属性。a标签中class属性,供添加样式用,相关概念有class及映射className、classList这3个。
一般来说,所有属性都可以object.xxx、object["xxx"]及object.getAttribute("xxx")来访问的,但因class属于JavaScript保留字,故将其映射为className来供上述方案访问。所以标准浏览器都支持:a.className和a["className"]这2个办法的访问。
至于a.getAttribute("class")还是a.getAttribute("className")则需看浏览器是否兼容这个方法的访问了。(待考:前者能在Mozilla(Firefox)和Opera中正确运行,在IE和Safari中则不能使用。后者能在IE和Opera中正确运行,在Mozilla(Firefox)和Safari中则不能使用。)
但DOM2级方法object.getAttribute("xxx"),用来获取标签内的自定义属性是没问题的,所以一个保守的做法是
1-2、classList属性。因为class属性的值可以包含若干个样式名,如class="top1
left",这个字符串性质的值经常需要我们操作,className完成class的了映射,但操作class属性的值时却显得僵硬的很。怎么办,HTML5 新增API之classList能解决这个问题。
classList属性又是对className的一个改进,就像我们见到的arguments属性、childNode属性一样,可以理解为一个类数组对象。(仍然待考哈)
classList带来了一些操作方法和属性:add(
), remove( ),toggle( ),contains( )等及length。
可以用a.classList或者a["classList"]办法访问,a.getAttribute("classList")仍然存在浏览器兼容问题。
2、对于href属性,[b]style属性、hidden属性,getAttribute("xxx")访问和.号、[
]号访问的结果为啥有区别呢?[/b]
为啥不同结果呢?
这里肯定存在浏览器解析的问题,但究竟如何还的后续深究下,如有高手路过,切望不吝赐教啊~
<a class="top1" href="www.56young.com" title="click me" style="display: block;">空连接0</a> <a id="top2" href="www.56young.com" lang="CN" tabindex="2" hidden="hidden" status="1">空连接1</a>访问a标签中属性xxx的办法是:
1、object.xxx
2、object["xxx"] //此条是1的变体,可以看做是等价的
3、object.getAttribute("xxx")
但是在访问中存在兼容问题,大概可以划分为两类问题:
A、属性的兼容:id、class、href、title、style、hidden等属性并非都可以用1,2,3这三个方案访问;
[b]B、浏览器的兼容:并非所有的浏览器都内置了这三个方法。[/b]
对class属性的进一步探讨:
1-1、className属性。a标签中class属性,供添加样式用,相关概念有class及映射className、classList这3个。
一般来说,所有属性都可以object.xxx、object["xxx"]及object.getAttribute("xxx")来访问的,但因class属于JavaScript保留字,故将其映射为className来供上述方案访问。所以标准浏览器都支持:a.className和a["className"]这2个办法的访问。
至于a.getAttribute("class")还是a.getAttribute("className")则需看浏览器是否兼容这个方法的访问了。(待考:前者能在Mozilla(Firefox)和Opera中正确运行,在IE和Safari中则不能使用。后者能在IE和Opera中正确运行,在Mozilla(Firefox)和Safari中则不能使用。)
但DOM2级方法object.getAttribute("xxx"),用来获取标签内的自定义属性是没问题的,所以一个保守的做法是
1-2、classList属性。因为class属性的值可以包含若干个样式名,如class="top1
left",这个字符串性质的值经常需要我们操作,className完成class的了映射,但操作class属性的值时却显得僵硬的很。怎么办,HTML5 新增API之classList能解决这个问题。
classList属性又是对className的一个改进,就像我们见到的arguments属性、childNode属性一样,可以理解为一个类数组对象。(仍然待考哈)
classList带来了一些操作方法和属性:add(
), remove( ),toggle( ),contains( )等及length。
可以用a.classList或者a["classList"]办法访问,a.getAttribute("classList")仍然存在浏览器兼容问题。
2、对于href属性,[b]style属性、hidden属性,getAttribute("xxx")访问和.号、[
]号访问的结果为啥有区别呢?[/b]
//在ff上的访问结果:
var a = document.getElementsByTagName('a')[0]; console.log("1 "+a.href); //"1 file:///C:/Users/Administrator/Desktop/www.56young.com" console.log("2 "+a["href"]); //"2 file:///C:/Users/Administrator/Desktop/www.56young.com" console.log("3 "+a.getAttribute("href")); //"3 www.56young.com" console.log("4 "+a.style); //"4 [object CSS2Properties]" console.log("5 "+a["style"]); //"5 [object CSS2Properties]" console.log("6 "+a.getAttribute("style")); //"6 display: block;"
为啥不同结果呢?
这里肯定存在浏览器解析的问题,但究竟如何还的后续深究下,如有高手路过,切望不吝赐教啊~
相关文章推荐
- 读取数据库带有html的字符串在前台显示,html标签与属性之间空格消失了,如<pclass=''>
- html meta标签常用属性整理
- HTML meta标签常用属性整理
- javascript通过获取html标签属性class实现多选项卡的方法
- HTML meta标签常用属性整理
- HTML 标签可用属性整理收集
- javascript通过获取html标签属性class实现多选项卡的方法
- HTML标签meta总结,HTML5 head meta属性整理
- html重要标签和属性整理(转载)
- HTML的meta标签常用属性整理
- php整理html 自定义允许使用的标签和属性属性
- Struts2 select标签 设置Class属性生成的html代码中select没有class属性问题
- ckeditor html标签的class 等attribute属性都被屏蔽啦,替换成空的解决方案
- 自定义HTML标签属性
- T-SQL存储过程:获取属性名称的HTML标签
- HTML 标签自定义属性
- html select标签的属性
- 入门:HTML的基本标签和属性简单介绍
- 语义化你的HTML标签和属性
- HTML 标签的 ismap 和 usemap 属性