//虽然DOM中没有提供insertAfter方法,但是我们可以通过insertBefore方法去完成这个方法的实现:
function insertAfter(newElement,targetElement) {
var parent = targetElement.parentNode
if (parent.lastChild == targetElement) {
parent.appendChild(newElement)
}else{
parent.insertBefore(newElement,targetElement.nextSibling)
}
}
下面,请看看这个函数是如何一步一步地完成工作的
(1)首先,这个函数有两个参数:一个是将被插入的新元素,另一个是目标元素。这两个参数通过变量newElement和targetElement被传递到这个函数;
(2)把目标元素的parentNode属性值保存到变量parent里;
(3)接下来,检查目标元素是不是parent的最后一个子元素;
(4)如果是,就用appendChild方法把新元素追加到parent元素上,这样新元素就恰好被插入目标元素之后;
(5)如果不是,就把新元素插入到目标元素和目标元素的下一个兄弟元素之间,目标元素的下一个兄弟元素即目标元素的nextSibling属性,用insertBefore方法把新元素插入到目标元素的下一个兄弟元素之前。
function addLoadEvent(func) {
var oldonload = window.onload//将现有的事件处理函数的值存入变量中
if (typeof window.onload !== 'function') {
window.onload = func//如果这个事件处理函数没有绑定任何函数,就把新函数添加给它
} else {
window.onload = function () {
oldonload()
func()//如果已经绑定了函数,就把新函数追加到现有指令的末尾
}
}
}
function addClass(element, value) {
if (!element.className) {
element.className = value
} else {
newClassName = element.className
newClassName += " "
newClassName += value
element.className = newClassName
}
}
function moveElement(elementID, final_x, final_y, interval) {
if (!document.getElementById) {
return false
}
if (!document.getElementById(elementID)) {
return false
}
var 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"
}
var xpos = parseInt(elem.style.left)
var ypos = parseInt(elem.style.top)
if (xpos == final_x && ypos == final_y) {
return true
}
if (xpos < final_x) {
var dist = Math.ceil((final_x - xpos) / 10)
xpos += dist
}
if (xpos > final_x) {
var dist = Math.ceil((xpos - final_x) / 10)
xpos -= dist
}
if (ypos < final_y) {
var dist = Math.ceil((final_y - ypos) / 10)
ypos += dist
}
if (ypos > final_y) {
var dist = Math.ceil((ypos - final_y) / 10)
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);
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。