一些很实用但是JavaScript没有提供的函数

moveElement:对元素进行移动

function moveElement(elementID,final_x,final_y,interval){  //elementID是要移动元素的ID,final_x和final_y要移动到的位置,interval是移动时间间隔
	//安全检查
	if(!document.getElementById) return false ;
	if(!document.getElementById(elementID)) return false ;
	
	elem = document.getElementById(elementID) ;
	if(elem.movement)  clearTimeout(elem.movement) ;  //防止快速切换对象元素
	if(!elem.style.left) elem.style.left = "0px" ;    
	if(!elem.style.top) elem.style.top = "0px" ;      //防止元素没有left、top属性
	var xpos = parseInt(elem.style.left) ;            
	var ypos = parseInt(elem.style.top) ;             //取前面的整数
	var dist = 0 ;
	if(xpos == final_x && ypos == final_y){
		return true ;	
	}
	if(xpos < final_x){
		dist = Math.ceil((final_x - xpos)/10) ;
		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('"+elementID+"',"+final_x+","+final_y+","+interval+")" ;
	elem.movement = setTimeout(repeat,interval) ;
}


JavaScript提供了insertBefore函数,但是没有提供insertAfter函数,所以要自己实现一个insertAfter:

function insertAfter(newElement,targetElement){     //targetElement为要把newElement插入哪个元素的后边
	var parent = targetElement.parentNode ;
	if(parent.lastChild == targetElement){
		parent.appendChild(newElement) ;	
	}else{
		parent.insertBefore(newElement,targetElement.nextSibling) ;	
	}
}

JavaScript有onload事件函数,但是只能加载一个函数,若想加载多个函数,addLoadEvent:

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


getNextElement返回当前节点下一个元素节点(若想要当前节点的下一个节点,则直接node.nextSibling就可以了)


function getNextElement(node){
	if(node.nextSibling.nodetype == 1)  return  node ;
	if(node.nextSibling){
		return getNextElement(node.nextSibling) ;	
	}
	return null ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值