获取类名的兼容函数

//obj.getElementsByClassName   只能在现代浏览器中使用,不能在IE8以下使用
//两个参数 classname 类名 obj 范围
function getClass(classname,obj){
obj=obj||document;
if(obj.getElementsByClassName){
return obj.getElementsByClassName(classname);// 检测出能在现代浏览器中使用
}else{//在IE8及以下怎么办,获取所有的标签名
var arr=[];
var objs=obj.getElementsByTagName("*");//声明所有的标签用*
for (var i = 0; i < objs.length; i++) {//进行遍历
// if(objs.className==classname){//基本情况
if(checkClass(obj[i].className,classname)){
arr.push(objs[i]);
}
}
return arr;
}
}
//box xi sh 题中有的 用变量classname
//xi val 要找的类名 用变量val
function checkClass(classname,val){
var arr1=obj.split(" ");
for (var i = 0; i < arr1.length; i++) {
if(arr1[i]==val){
return 1;
}
}
return 0;
}

检测结果显示

 <div class="box one"></div>
<div class="one"></div>
var one=getClass("one");
console.log(one.length);

将函数进行封装

//我们的目的是  div   .box  #box
//最后我们要用到$("div") $(".box") $("#box") function(){}
//两个参数 selector 就是div .box #box obj是范围
function $(selector,obj){
var obj=obj||document;
if(typeof selector=="string"){
selector=selector.replace(/^\s*|\s*$/g,"");
if(selector.charAt(0)=="."){
return getClass(selector.slice(1),obj);
}else if(selector.charAt(0)=="#"){
return document.getElementById(selector.slice(1));
}else if(/^[a-zA-Z][a-zA-Z0-8]{0,8}$/.test(selector)){
return obj.getElementsByTagName(selector);
}
}else if(typeof selector=="function"){
window.onload=function(){
selector();
} }
}

检测结果

<div class="box one"></div>
<div id="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
var one=getClass("one");
console.log(one.length);
var one=$("#one");
console.log(one);
var one1=$(".one");
console.log(one.length);
var one2=$("div");
console.log(one2.length);

获取样式的兼容函数

//obj.currentStyle()   ie
//getComputedStyle() w3c
// 两个参数 obj对象 pro 具体的属性
function getStyle(obj,pro){
if(obj.currentStyle){
return obj.currentStyle[pro];
}else {
return getComputedStyle(obj,null)[pro];
}
}

检测结果

<div class="one"></div>
<div id="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
.one{
width:200px;
height: 200px;
background: red;
}
var one=$(".one")[0];
console.log(parseInt(getStyle(one,"width")));

JS的兼容函数的更多相关文章

  1. 关于js的兼容问题(小办法)!

    今天整理了一下浏览器对JS的兼容问题,希望能给你们带来帮助,我没想到的地方请留言给我,我再加上: 常遇到的关于浏览器的宽高问题: //以下均可console.log()实验 var winW=docu ...

  2. js中getByClass()函数

    js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...

  3. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

  4. js事件兼容处理

    js封装事件处理函数,兼容ie,支持事件代理 var eventUtil = { bindEvent: function(el, type, target, callback, popgation) ...

  5. js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域

    js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...

  6. JS常用自定义函数总结

    JS常用自定义函数总结   1.原生JavaScript实现字符串长度截取 2.原生JavaScript获取域名主机 3.原生JavaScript清除空格 4.原生JavaScript替换全部 5.原 ...

  7. js 浏览器兼容问题及解决办法

    JS中出现的兼容性问题的总结 1.关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题  我们都知道js通过style不可以获取行外样式,当我们需要获取行 ...

  8. Node.js 教程 06 - 函数

    前言: 本篇介绍的是Node.js中的函数,相对于上一篇会简单一点,其实和我们Javascript中的function无异. 好了,废话不多说了,我们进入正题吧. Node.js函数: [示例1:创建 ...

  9. 关于js的回调函数的一点看法

    算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做nativ ...

随机推荐

  1. ueditor编辑器使用

    下载ueditor1_4_3_3-gbk-asp 解压后重命名为ueditor上传至网站 在需要编辑器的位置增加asp代码: <td style="PADDING-LEFT: 10px ...

  2. 尚德,国美 interview summary

    尚德 Q:SDWebimage源代码,cell重用.先请求出来小头像,再请求出大头像?怎么处理? SDWebImageDownloader 直接给cell设置图片会怎样 A:图片URL相同,比较nsd ...

  3. 有关windows系统的EXE和DLL文件说法错误

    正确答案: B C   你的答案: C (错误) EXE和DLL文件都是PE文件 EXE不能有导出函数,DLL可以有导出函数 EXE有x86和x64之分,则DLL没有 EXE可以单独运行,DLL则不行 ...

  4. C++ 支持两种索引的排行榜模板

    version 1: #ifndef RANK_TMPL_H_ #define RANK_TMPL_H_ #include <stdio.h> #include <stdint.h& ...

  5. Linux基本操作命令

    Linux基本操作命令 首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos.我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如do ...

  6. JMeter学习-023-JMeter 命令行(非GUI)模式详解(一)-执行、输出结果及日志、简单分布执行脚本

    前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...

  7. SpringMVC原理解析-Servlet容器启动时初始化SpringMVC应用的原理

  8. 把汉字转换为html实体编码

    背景:工作中需要把汉字转换为html实体编码实现方式:import org.apache.commons.lang.StringEscapeUtils;public static void main( ...

  9. Excel标题与索引的对应关系

    /// <summary> /// 返回对应标题的索引 /// </summary> /// <param name="columnTitle"> ...

  10. 【git常见问题】fatal: Not a valid object name: 'master'.

    创建本地分支:git branch dev 报错:fatal: Not a valid object name: 'master'. 原因: 问题描述-一个非法的master,原因:本地还没有创建ma ...