• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

[ javascript ] getElementsByClassName与className和getAttribute!

对于javascript中的getElementsByClassName 在IE 6/7/8 不支持问题。

那么须要模拟出getElementsByClassName  须要採用className属性,这里就涉及到javascript中的getAttribute问题。

在ie 6/7 中,对于getAttribute存在Bug

须要採用className 获取例如以下:

var node = document.getElementById("test");
var name = node.className;

对于标准浏览器,则能够直接使用className 也能够使用 getAttritbute,结果一样:

node.getAttritbute("class");

可是假设是ie 6/7 ,则getAttribute()存在问题。

所以getElementsByClassName 能够使用例如以下方式:

getElementsByClazzName = document.getElementsClassName ? 
							function(name){
								return document.getElementsClassName(name);
							}:function(name){
								var nodes = document.getElementsByTagName("*"),
									result = [];
								for(var node in nodes){
									if(node.className && node.className.indexOf(name)){
										result.push(node);
									}	
								}
								return result;
							}

这里的实现方式比較简单。

1:常规属性建议使用:node.xxx。
2:自己定义属性建议使用: node.getAttribute("xxxx")。
3:当获取的目标是 javascript 里的keyword时建议使用node.getAttribute("xxx")。如label中的for。
4:当获取的目标是保留字,如:class,请使用className取代。

posted on 2017-07-05 18:04  cynchanpin  阅读(680)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3