【前端学习笔记】JavaScript 常用方法兼容性封装
获取样式函数封装
function getStyle(ele,attr){
if(ele.currentStyle){
return ele.currentStyle[attr];
}
else{
return window.getComputedStyle(ele,null)[attr];
}
};
getClass()封装
function getClass(element, names){
//如果存在getElementsByClassName()方法,则直接获取元素。
if(document.getElementsByClassName){
return element.getElementsByClassName(names);
}
var list = [];
//获取所在元素区域内所有子元素
var doms = element.getElementsByTagName('*');
//处理传入的类名参数
var namesList = myTrim(names);
var namesArr = namesList.split(' ');
for(var i = 0; i < doms.length; i++){
var flag = true;
//处理子元素类名
var str = myTrim(doms[i].className);
var arr = str.split(' ');
for(var j = 0; j < namesArr.length; j++){
//如果存在一个传入的类名参数的值在子元素类名中不存在,则标志位变为false。
if(arr.indexOf(namesArr[j]) == -1){
flag = false;
}
}
//若标志位始终为true,则把该子元素加入到数组中;
if(flag){
list.push(doms[i]);
}
}
return list;
};
//去除字符串两侧的空格,且把当中的多个空格合并成一个。
function myTrim(str){
var str1 = str.replace(/(^\s*)/g,'');
var str2 = str1.replace(/(\s*$)/g,'');
var str3 = str2.replace(/(\s+)/g,' ');
return str3;
};
仿jQuery $()获取元素
//仿jQuery $()获取元素
function $(str){
var s = str.charAt(0);
var ss = str.substr(1);
switch(s) {
case '#':
return document.getElementById(ss);
break;
case '.':
return getClass(document,ss);
break;
default:
return document.getElementsByTagName(str);
}
}
获取屏幕宽度兼容封装
function window_width(){
if(window.innerWidth != null){
return window.innerWidth;
}
else if(document.compatMode === 'CSS1Compat'){
return document.documentElement.clientWidth;
}
return document.body.clientWidth;
}
【前端学习笔记】JavaScript 常用方法兼容性封装的更多相关文章
- 前端学习笔记-JavaScript
js引入方式: 1.嵌入js的方式:直接在页内的script标签内书写js功能代码. <script type="text/javascript">alert('hel ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
- web前端学习笔记
web前端学习笔记(CSS盒子的定位) 相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准 ...
- 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果
学习笔记---Javascript事件Event.IE浏览器下的拖拽效果 1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...
- 前端学习笔记之JavaScript
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名ScriptEase(客 ...
- [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡
当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...
- HTML 学习笔记 JavaScript(面向对象)
现在让我们继续跟着大神的脚步前进 学习一下JavaScript中的面向对象的思想,其实作为一个iOS开发者,对面向对象还是比较熟悉的,但是昨晚看了一下Js中的面向对象,妈蛋 一脸萌比啊.还好有大神.让 ...
随机推荐
- 20155224聂小益的Linux学习
20155224聂小益的虚拟机安装 虚拟机安装 一开始,我在下载VirtulBox及Ubuntu遇到了一些困难,老实说点进去看到一大堆英文界面的时候真的是有点吓到.不过几秒钟之后就发现这并没有什么哈哈 ...
- 20155231 信息安全技术概论实验二 Windows口令破解
20155231 信息安全技术概论实验二 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验人数 每组一人 系统环境 windo ...
- 20155330 实验一《Java开发环境的熟悉》(Windows+IDEA)实验报告
实验知识点 JVM.JRE.JDK的安装位置与区别: 命令行运行javac:java:javac -cp; java -cp: PATH,CLASSPATH,SOURCEPATH的设定方法与应用: 包 ...
- Easyui 控件的初始化方法
问题: Easyui的控件在初始化的时候有两种方式: 页面指定class属性 js里初始化该id为easyui的控件 那么问题是: 如果页面不指定class属性,只是使用js初始化的话,会导致无法用控 ...
- MySQL入门篇(四)之MySQL主从复制
一.MySQL主从复制原理 随机站点访问量的鞥集啊,单台的MySQL服务器压力也不断地增加,此时需要对MySQL进行优化,如果在MySQL优化无明显改善时期,可以使用高可用.主从复制.读写分离.分库分 ...
- underscore.js 源码分析5 基础函数和each函数的使用
isArrayLike 检测是数组对象还是纯数组 var property = function(key) { return function(obj) { return obj == null ? ...
- Maven学习(三)-----Maven本地资源库
Maven本地资源库 Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹.很简单,当你建立一个Maven项目,所有相关文件将被存储在你的M ...
- python进程-进阶
进程同步(multiprocessing.Lock(锁机制).multiprocessing.Semaphore(信号量机制).multiprocessing.Event(事件机制)) 在计算机中,有 ...
- Firefox开发
官方文档 First extension 目录结构 ➜ firefox tree . └── borderify └── manifest.json // 必须 directory, files ma ...
- Jenkins单元测试
Jenkins提供了一个开箱即用功能来选择JUnit,并提供了一系列的插件进行单元测试等技术,一个例子是 MSTest 的.Net单元测试.如果你打下面的链接 https://wiki.jenkins ...