一些常用的JS函数
//获取元素属性
function getStyle(obj, attr) {
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, 0)[attr];
}
//运动函数
function doMove(obj, attr, speed, target, endFn) {
clearInterval(obj.timer);
speed = parseInt(getStyle(obj, attr)) < target ? speed : -speed;
//alert(speed);
obj.timer = setInterval(function () {
var curPosition = parseInt(getStyle(obj, attr)) + speed;
if (curPosition > target && speed > 0 || curPosition < target && speed < 0)
curPosition = target;
obj.style[attr] = curPosition + 'px';
if (curPosition == target) {
clearInterval(obj.timer);
endFn && endFn();
} }, 50); }
//抖动函数
//透明度渐变函数
//需找与数组相等的值函数
function arrIndexOf(arr, v) {
for (i = 0; i < arr.length; i++) {
if (arr[i] == v) {
return i; //返回与目标值相等的数组的下标值
}
}
return -1;
}
//getElementByClassName函数
function getElementByClassName(parent, tagName, className) {
var aEls = parent.getElementsByTagName(tagName);
var arr = [];
for (var i = 0; i < aEls.length; i++) {
var arrClassName = aEls[i].className.split(' ');
var _index = arrIndexOf(arrClassName, className);
if (_index != -1) {
arr.push(aEls[i]);
}
}
return arr;
}
//addClass函数
function addClass(obj, className) {
if (obj.className == '') {
//如果原来没有class
obj.className = className;
}
else {
var arrClassName = obj.className.split(' ');
var _index = arrIndexOf(arrClassName, className);
if (_index == -1) {
//如果要添加的class在原来的class中不存在
obj.className += ' ' + className;
}
//如果要添加的class在原来的class中存在,则不需要做任何事
}
}
//removeClass函数
function removeClass(obj, className) {
//如果原来有class
if (obj.className != '') {
var arrClassName = obj.className.split(' ');
var _index = arrIndexOf(arrClassName, className);
if (_index != -1) {
arrClassName.splice(_index, 1); //删除需要删除的calss
obj.className = arrClassName.join(' '); //然后将arrClassName数组拼接起来
}
}
}
//绑定事件函数
function bind(obj, evname, fn) {
if (obj.addEventListener) {
obj.addEventListener(evname, fn, false);
} else {
obj.attachEvent('on' + evname, function () {
fn.call(obj); //fn()==fn.call() call(第一个参数,第二个参数) call函数可以改变函数this的指向,call函数传入的第一个参数就是改变this指向的值,call的第二第三个参数就是原函数的参数
});
}
}
//鼠标在可视区域内的拖拽 不兼容非标准IE
function clientDrag(obj) {
obj.onmousedown = function (ev) {
ev = ev || event;
var ms_b = ev.clientX - obj.offsetLeft;
var ms_t = ev.clientY - obj.offsetTop;
document.onmousemove = function (ev) {
ev = ev || event;
var currX = ev.clientX - ms_b;
var currY = ev.clientY - ms_t;
var Width = document.body.clientWidth || document.documentElement.cilentWidth;
var Height = document.body.clientHeight || document.documentElement.cilentHeight;
if (currX < 0) { currX = 0; }
else if (currX > Width - obj.clientWidth) {
currX = Width - obj.clientWidth;
}
if (currY < 0) { currY = 0; }
else if (currY > Height - obj.clientHeight) {
currY = Height - obj.clientHeight;
}
obj.style.left = currX + 'px';
obj.style.top = currY + 'px';
return false;
}
document.onmouseup = function () {
document.onmousemove = document.onmouseup = null;
}
}
}
一些常用的JS函数的更多相关文章
- 工作中常用的JS函数整理分享(欢迎大家补充)
今年在渣X工作整理的常用JS函数 今年来了渣X工作,我所在这个部门分工很奇怪,CSS竟然有专门的人在搞,开发PHP的人员需要处理JS,以至于有时候开发起来不是那么得心应手,感觉把JS和CSS拆开就像是 ...
- 常用原生JS函数和语法集合
luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...
- 常用的js函数
function $(){ return document.getElementById(arguments[0])}; /** * 得到上一个元素 * @param {Object} elem */ ...
- 100多个基础常用JS函数和语法集合大全
网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...
- (转)在网页中JS函数自动执行常用三种方法
原文:http://blog.sina.com.cn/s/blog_6f6b4c3c0100nxx8.html 在网页中JS函数自动执行常用三种方法 在网页中JS函数自动执行常用三种方法 在HTML中 ...
- 原生JS研究:学习jquery源码,收集整理常用JS函数
原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...
- api日常总结:前端常用js函数和CSS常用技巧
我的移动端media html{font-size:10px} @media screen and (min-width:321px) and (max-width:375px){html{font- ...
- web前端关于html转义符的常用js函数
web前端关于html转义符的常用js函数 //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+? ...
- 基础常用JS函数和语法
100多个基础常用JS函数和语法集合大全 来源:http://www.cnblogs.com/hnyei/p/4605103.html 网站特效离不开脚本,javascript是最常用的脚本语言,我 ...
随机推荐
- linux中BASH_SOURCE[0]
在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非常有用的.而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非 ...
- window.opener方法的使用 js跨域
原文:window.opener方法的使用 js跨域 最近公司网站登陆加入了第三方登陆.可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.open文件打开一个lo ...
- android HttpGet 另开线程获取网络数据问题
android跨线程通讯可以使用android.os.Handler-android.os.Message这两类对象完成. public static void getResultForHttpGet ...
- STM32F103控制两个步进电机按照一定转速比运动
这个暑假没有回家,在学校准备九月份的电子设计竞赛.今天想给大家分享一下STM32定时器控制两个步进电机按照一定速度比转动的问题. 这次做的05年的电子设计竞赛题目,运动悬挂系统..本实验是控制两个步进 ...
- iostat,mpstat,sar即时查看工具,sar累计查看工具
iostat,mpstat,sar即时查看工具,sar累计查看工具
- 你真的用上keepalive了吗
转自http://qa.blog.163.com/blog/static/19014700220134771052763/ Keep-Alive即俗称的长连接,使客户端到服务端建立的连接持续有效,当对 ...
- [转]ArcGIS移动客户端离线地图的几种解决方案
原文地址:http://blog.chinaunix.net/uid-10914615-id-3023158.html 移动GIS中,通常将数据分为两大类:basemap layer和operatio ...
- 杭电oj 1009 FatMouse' Trade
Tips:本题采用贪心算法,类似于背包问题,关键在于读入数据之后,将数据按 J[i]/F[i] 从大到小排列即可. /**本程序主要采用贪心算法思想,类似于背包问题*/ #include<std ...
- 模板应用--UI线程与worker线程同步 模仿c# invoke
由之前的一篇博文 <UI线程与worker线程><UI线程与worker线程>引出,UI线程与worker线程“串行化”在win32上实现是多么没有节操的事情,代码编写麻烦不说 ...
- Windows下通过脚本快速修改IP地址
Windows下通过脚本快速修改IP地址 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了. 经常要切换ip,所以我写了两个脚本: c:\办公室.bat netsh interface i ...