常用js函数收录

一、函数页面加载addLoadEvent()

由于window.onload只能绑定一条指令,当有多条指令被绑定时,只会有最后的那个函数被实际执行。对此,我们有两个解决方法:

(1)先创建一个匿名函数来容纳这两个函数

window.onload=function{
firstFunction();
secondFunction();
}

  这个方法在不是很多函数的情况下可以很好的工作,但是一般我们更加建议使用法二

(2)addLoadEvent函数

该函数的伪代码:

1.把现有的window.onload事件处理函数的值存入变量oldonload

2.如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它

3.如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾

该函数代码如下:

function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}
else{
window.onload=function(){
oldonload();
func();
}
}
}

  说明:这将把那些在页面加载完毕时执行的函数创建为一个队列。如果想要添加新函数,只需要执行以下两行:

addLoadEvent(firstFunction);
addLoadEvent(secondFunction);

  

二、在元素后面插入元素insertAfter():

js函数只提供了insertBefore(),可是却没有提供insertAfter,但是它给了我们编写该函数的所有工具

该函数伪代码:

(1)获取目标元素的父节点

(2)判断目标元素的父节点的最后一个子节点是否是目标元素,若是,则直接把新元素添加到其父节点上

(3)否则,利用insertBefore把新元素插入到目标元素的下一个兄弟节点的前面

function insertAfter(newElement,parentNode){

var parent=targetElement.parentNode;

if(parent.lastChild==targetElement){

parent.appendChild(newElement);

}

else{

parent.insertBefore(newElement,targetElement.nextSibling);

}

}

  

3.getHTTPObject(),用Ajax创建XMLHTTPRequest对象

不同IE版本中使用的XMLHTTP对象也不完全相同,为了兼容所有浏览器,函数应当这样写:

function getHTTPObject(){

if(typeof XMLHttpRequest=="undefined")

XMLHttpRequest=function(){

try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");}

catch(e){}

try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}

catch(e){}

try{return new ActiveXObject("Msxml2.XMLHTTP");}

catch(e){}

return false;

}

return new XMLHttpRequest();

}

  这样,在我们编写脚本需要创建XMLHTTP对象的时候,就可以使用以下语句:

var request=getHttpObject();

  

4.js动画,移动目标元素moveElement()

伪代码如下:

(1)获得元素的当前元素

(2)如果元素已经到达它的位置,则退出这个函数

(3)如果元素尚未达到它的目的地,则把它向目的地移近一点儿

(4)经过一段时间间隔之从步骤1开始重复上述步骤

function moveElement(elementID,final_x,final_y,internal){
if(!document.getElementById) return false;
if(!document.getElementById(elementID)) return false;
var elem=document.getElementById(elementID);
if(element.movement){
clearTimeout(elem.movement);
}//利用与当前元素的直接相关的属性来清除movement指令,避免用户在多次反复调用movement函数时导致元素同时往多个方向进行移动而产生错误
if(!elem.style.left){
elem.style.left="0px";
}
if(!elem.style.top){
elem.style.top="0px";
}//判断目标元素是否有设置定位,没有则默认定位到top:0; left:0;处
var xpos=parseInt(elem.style.left);
var ypos=parseInt(elem.style.top);//在这个函数中要进行多次的数值比较,而elem.style.left和elem.style.top返回的则是“XXpx”这样一个字符串,所以要使用parseInt来转换
var dist=0;
if(xpos==final_x&&ypos==final_y){
return false;
}//如果目标元素已经到达目标点,则退出函数
if(xpos<final_x){
dist=Math.ceil((final_x-xpos)/10);//ceil方法使得数值朝大于方向获取最为接近的整数
xpos=xpos+dist;
}
if(xpos>final-x){
dist=Math.ceil((xpos-final_x)/10);
xpos=xpos+dist;
}
if(ypos<final_y){
dist=Math.ceil((final_y-ypos)/10);
ypos=ypos+dist;
}
if(ypos>final_y){
dist=Math.ceil((ypos-final_y)/10);
ypos=ypos+dist;
}
elem.style.left=xpos+"px";
elem.style.top=ypos+"px";
var repeat="moveElement('"+elementTD"+',"+final_x+","+final_y+","+internal+")";//因为setTimeout函数的第一个参数值为字符串,所以repeat需要参数拼接起来的字符串
elem.movement=setTimeout(repeat,interval);
}

 

5.添加类:addClass()

有时候为了动态的给网页添加样式,我们常常通过给目标元素添加特定的类名来设置样式:

伪代码如下:

(1)判断目标元素是否有类名,若没有,则直接把value赋值给目标元素

(2)如果有类名,则将将原类名赋值给一个新变量,然后再给这个新变量赋值一个空格和要添加的类名,最后再把这个新变量赋值给目标元素的类名属性

function addClass(element,value){
if(!element.className){
element.className=value;
}else{
newClassName=element.className;
newClassName+=" ";
newClassName+=value;
element.className=newClassName;
}
}

  

 

 6.表格的增强显示:stripeTables()和highlightRows()

代码如下:

function stripeTables(){
if(!document.getElementByTagName) return false;
var tables=document.getElementsByTagName("table");
for(var i=0;i<tables.length;i++){
var odd=false;//定义一个全局变量,进行一次循环就更替一次值,使得表格行的样式间隔改变
var rows=tables[i].getElementsByTagName("tr");
for(var j=0;j<rows.length;j++){
if(odd=true){
addClass(rows[j],"odd");
odd=false;
}else{
odd=true;
}
}
}
}

function highlightRows(){
if(!document.getElementsByTagName) return false;
var rows=document.getElementsByTagName("tr");
for(var i=0;i<rows.length;i++){
rows[i].oldClassName=rows[i].className;
rows[i].onmouseover=function(){//鼠标移至目标元素上方时改变添加类名
addClass(this,"highlight");
}
rows[i].onmouseout=function(){
this.className=this.oldClassName;//鼠标移开目标元素时恢复原类名
}
}
}

  

原文地址:https://www.cnblogs.com/runhua/p/6436163.html