var getElmsByClsName = function(className, results) {
results = results || [];
// 判断浏览器是否支持 getElementsByClassName
if(document.getElementsByClassName) {
// 浏览器支持这个方法
results.push.apply( results,
document.getElementsByClassName(className) );
} else {
// 浏览器不支持
// 实现:通过类名来获取页面中的元素
// 思路:
// 1 通过标签名获取到所有的元素
// 2 循环遍历获取到的所有元素,分别判断当前元素有没有指定的类 // 1 获取到页面中所有的元素
var nodes = document.getElementsByTagName("*");
// 2 遍历
for(var i = 0; i < nodes.length; i++) {
var cNodes = nodes[i];
/*// 2.1 判断当前元素是否包含 指定的类 className
// 第一种方式:
// 1 获取到当前元素的类名 className/getAttribute("class")
// 2 将获取到的类名 以空格分割 产生一个数组
// ["c1", "c2", "c3"]
// 3 用数组中的每一个元素分别跟className比较
// 4 如果是符合要求的就放到 results 中
var cNodeClsName = cNodes.className;
var clsNames = cNodeClsName.split(" ");
for(var j = 0; j < clsNames.length; j++) {
if(clsNames[j] === className) {
results.push(cNodes);
}
}*/ // 第二种方式
// 在类名的两遍分别加空格,然后 参数类名 两端也加上空格
// 然后,在indexOf 来匹配
// c1 c2 c3 => 如果是判断c,也存在
// " c1 c2 c3 ".indexOf(" " + className + " ")
// " c "
if( (" " + cNodes.className + " ").indexOf(" " + className + " ") > -1) {
results.push(cNodes);
}
}
} return results;
};

最新文章

  1. JUnit4参数的使用
  2. 【java基础学习一】int[]、Integer[]、String[] 排序( 正序、倒叙)、去重
  3. 用apache-cxf生成webservice客户端的时候报错Parameter: shead already exists for method
  4. 实现Activity刷新 (转)
  5. iOS获取通讯录 电话号码与姓名
  6. linux下ping加时间戳实时输出到文件 放后台运行
  7. Java中resourceBundle和Properties的区别
  8. 浅析JVM内存结构和6大区域(转)
  9. ci 用本身 email 类发 email
  10. 深入解析.NET框架
  11. JDK1.7 安装加(一劳永逸的环境配置)
  12. Android 关于网址,电话号码,邮箱的正则表达式-最权威
  13. Spark大型电商项目实战-及其改良(3) 分析sparkSQL语句的性能影响
  14. 理解Promise的三种姿势
  15. ArrayUtil的创建和使用
  16. Python3 list sort排序
  17. hadoop streaming怎么设置key
  18. 音响理论基础入门:Gain(增益)
  19. 关于controller中调用多个service方法的问题
  20. richface的配置、用法介绍和注意事项

热门文章

  1. CSS读书笔记(3)---清除浮动的几种方法
  2. 优动漫PAINT用户界面介绍
  3. ajax发送请求是图标转圈圈实现
  4. jQuery删除元素
  5. 常用css和js内容
  6. PHP中调用Soap/WebService
  7. 使用canvas保存网页为pdf文件支持跨域
  8. Zookeeper分布式锁解决方案具体代码
  9. 理解 Javascript 执行上下文和执行栈
  10. python之简述上下文管理