常用的js函数
function $(){ return document.getElementById(arguments[0])}; /**
* 得到上一个元素
* @param {Object} elem
*/
function prev(elem){
do{
elem = elem.previousSibling;
} while(elem && elem.nodeType != 1);
return elem;
} /**
* 得到下一个元素
* @param {Object} elem
*/
function next(elem){
do{
elem = elem.nextSibling;
} while(elem && elem.nodeType != 1);
return elem;
} /**
* 得到第一个元素
* @param {Object} elem
*/
function first(elem){
elem = elem.firstChild;
return elem && elem.nodeType != 1 ? next(elem) : elem;
} /**
* 得到最后一个元素
* @param {Object} elem
*/
function last(elem){
elem = elem.lastChild;
return elem && elem.nodeType != 1 ? prev(elem) : elem;
} /**
* 得到父元素
* @param {Object} elem
* @param {Number} num 需要寻找的父级级别
*/
function parent(elem, num){
num = num || 1;
for(var i=0; i<num; i++){
if(elem != null) elem = elem.parentNode; //原书中这块有错
}
return elem;
} /**
* 得到相关name元素
* @param {String} name
* @param {Object} elem
*/
function tag(name, elem){
return (elem || document).getElementsByTagName(name)
} /**
* 根据tag寻找
* @param {String} name
* @param {String} type
*/
function hasClass(name, type){
var r = [];
var re = new RegExp('(^|\\s)'+name+'(\\s|$)');
var e = document.getElementsByTagName(type || '*');
for(var i=0; i<e.length; i++){
if(re.test(e[i].className)){
r.push(e[i]);
}
}
return r;
//http://www.cnblogs.com/rubylouvre/archive/2009/09/01/1557765.html //司徒兄有不同的看法
} /**
* 获取元素文本
* @param {Object} e
*/
function text(e){
var t = '';
e = e.childNodes || e;
for(var i=0; i<e.length; i++){
//如果不是元素,则追加其文本值
t += e[i].nodeType != 1 ? e[i].nodeValue : text(e[i].childNodes);
}
return t;
} /**
*
* @param {String} elem
* @param {String} name
* @param {String} value
*/
function attr(elem, name, value){
if(!name || name.constructor != String){
return '';
}
//检查name的属性是否在怪异命名情形中
name = {'for': 'htmlFor', 'class': 'className'}[name] || name;
if(typeof value != 'undefined'){
elem[name] = value;
if(elem.setAttribute){
elem.setAttribute(name, value);
}
}
return elem[name] || elem.getAttribute(name) || '';
} /**
* 在另一个元素之前插件元素
* @param {Object} parent
* @param {Object} before
* @param {String} elem
*/
function before(parent, before, elem){
if(elem == null){
elem = before;
before = parent;
parent = before.parentNode;
}
//获取元素的新数组
var elems = checkElem(elem);
//向后遍历
for(var i=elems.length; i>=0; i--){
parent.insertBefore(elems[i], before);
}
} /**
* 创建元素
* @param {Object} elem
*/
function create(elem){
//测试是否用命名空间来创建新的元素
return document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', elem) : document.createElement(elem);
} /**
* before 辅助函数
* @param {Object} elem
*/
function checkElem(a){
var r = [];
if(a.constructor != Array){ a = [a]};
for(var i=0; i<a.length; i++){
//如果是字符串
if(a[i].constructor == String){
//用一个临时元素来存放HTML
var div = document.createElement('div');
div.innerHTML = a[i];
//提取DOM结构到临时的div中
for(var j=0; j<div.childNodes.length; j++){
r[r.length] = div.childNodes[j];
}
} else if(a[i].length){ //如果它是数组
//假定DOM节点数组
for(var j=0; j<a[i].length; j++){
r[r.length] = a[i][j];
}
} else { //否则假定是DOM节点
r[r.length] = a[i];
}
}
return r;
} //此方法我已修改与原文中有异
/**
* 添加元素 (如果只有一个参数(无elem),则直接添加到document.body上)
* @param {Object} elem
* @param {Object} parent
*/
function append(parent, elem){
if(elem == null){
elem = parent;
parent = null;
}
//获取元素数组
var elems = checkElem(elem);
for(var i=0; i< elems.length; i++){
(parent || document.body).appendChild(elems[i]);
}
} /**
* 删除独立的DOM
* @param {Object} elem
*/
function remove(elem){
if(elem){ elem.parentNode.removeChild(elem) };
} /**
* 删除一个节点的所有子节点
* @param {Object} elem
*/
function empty(elem){
while(elem.firstChild){
remove(elem.firstChild);
}
} /**
* 阻止事件冒泡
* @param {Object} e
*/
function stopBubble(e){
if(e && e.stopPropagation){
e.stopPropagation();
} else {
window.event.cancelBubble = true;
}
} function stopDefault(e){
if(e && e.preventDefault){
e.preventDefault();
} else {
window.event.returnValue = false;
}
return false;
} /**
* 得到外链样式
* @param {Object} elem
* @param {String} name
*/
function getStyle(elem, name){
if(elem.style[name]){
return elem.style[name];
} else if(elem.currentStyle){ //如果ie
return elem.currentStyle[name];
} else if(document.defaultView && document.defaultView.getComputedStyle){ //如果是不是w3c方法
name = name.replace(/([A-Z])/g, '-$1');
name = name.toLowerCase();
//获取样式
var s = document.defaultView.getComputedStyle(elem, '');
return s && s.getPropertyValue(name);
} else {
return null;
}
} /**
* 获取元素的x位置
* @param {String} elem
*/
function pageX(elem){
return elem.offsetParent ? elem.offsetLeft + pageX(elem.offsetParent) : elem.offsetLeft;
} /**
* 获取元素的Y位置
* @param {String} elem
*/
function pageY(elem){
return elem.offsetParent ? elem.offsetTop + pageY(elem.offsetParent) : elem.offsetTop;
} /**
* 获取元素相对于父级的x位置
* @param {String} elem
*/
function parentX(elem){
return elem.parentNode == elem.offsetParent ? elem.offsetLeft : pageX(elem) - pageX(elem.parentNode);
} /**
* 获取元素相对于父级的Y位置
* @param {String} elem
*/
function parentY(elem){
return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
} /**
* 查找元素的左端位置
* @param {Object} elem
*/
function posX(elem){
return parseInt(getStyle(elem, 'left'));
} /**
* 查找元素的顶端位置
* @param {Object} elem
*/
function posY(elem){
return parseInt(getStyle(elem, 'top'));
} /**
* 设置元素水平位置
* @param {Object} elem
* @param {Object} pos
*/
function setX(elem, pos){
elem.style.left = pos + 'px';
} /**
* 设置垂直水平位置
* @param {Object} elem
* @param {Object} pos
*/
function setY(elem, pos){
elem.style.top = pos + 'px';
} /**
* 获取高度
* @param {Object} elem
*/
function getHeight(elem){
return parseInt(getStyle(elem, 'height'));
} /**
* 获取宽度
* @param {Object} elem
*/
function getWidth(elem){
return parseInt(getStyle(elem, 'width'));
} /**
* 得到完整的高度,就算对象已隐藏
* @param {Object} elem
*/
function fullHeight(elem){
//如果元素显示
if(getStyle(elem, 'display') != 'none'){
return elem.offsetHeight || getHeight(elem);
}
//如果不显示,则复原css
var old = resetCss(ele, {
display: '',
visibility: 'hidden',
position: 'absolute'
});
var h = elem.clientHeight || getHeight(elem);
restoreCss(elem, old);
return h;
} /**
* 恢复原有设置
* @param {String} elem
* @param {Object} prop
*/
function resetCss(elem, prop){
var old = {};
for(var i in prop){
old[i] = prop[i];
elem.style[i] = prop[i];
}
return old;
} /**
*
* @param {String} elem
* @param {Object} old
*/
function restoreCss(elem, old){
for(var i in old){
elem.style[i] = old[i];
}
}
常用的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 getStyle(obj, attr) { return obj.currentStyle ? obj.currentStyle[attr] : getComput ...
- 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是最常用的脚本语言,我 ...
随机推荐
- Java——Image 图片合并
1.合并图片 package com.tb.image; import java.awt.Image; import java.awt.image.BufferedImage; import java ...
- python_way ,自定义session
python_way ,自定义session container = {} #可以是数据库,可以是缓存也可以是文件 class Session: def __init__(self, handler) ...
- XAF应用开发教程(六)控制器
是的,XAF也是MVC结构的,但不仅限于MVC,ViewModel也存在,它是一项复合技术,AOP,ORM,MVC都有. 真实运行的系统中,仅有增删改查功能肯定是远远不够的,ERP.CRM等系统的开发 ...
- yii::app(); 怎么得到module、controller、action的名字
$module = Yii::app()->controller->module->id; $controller = Yii::app()->controller->i ...
- getAttribute()方法的使用小笔记
今天在某课网上复习js,突然卡在一个小例子上.反复做了几遍就是报错.终于查询w3c才找到错误的源头. 这里记录一下,谨防以后又忘了. 错误码: <body> <p id=" ...
- linux查看文件夹大小
du -sh 查看当前文件夹大小 du -sh * | sort -n 统计当前文件夹(目录)/文件的大小,并按文件大小排序 ------------------------------------- ...
- DOM节点操作
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1 一.创建节 ...
- Ajax 完整教程 (转)
http://www.cnblogs.com/Garden-blog/archive/2011/03/11/1981778.html
- Linux命令(2) - 查看目录和文件大小: du -sh
[root@hadoop01 ~]# ll total 156 drwxr-xr-x. 18 root root 4096 Jan 5 05:05 apps -rw-r--r--. 1 root ro ...
- 项目开发中遇到的extjs常见问题
事件触发机制 l 给某一个控件添加事件. obj.addEvents( {search : true }); l 给某一个事件添加处理函数 n 给一个对象或变量添加监听及对应得处理,可以在创建时,通过 ...