兼容性要求:兼容到 IE8
兼容实现返回从自身开始向上查找符合 className 的最近元素。
兼容实现返回元素的兄弟元素集合(不包含自身)。
兼容实现选择第几个子元素。
根据传入的 nodeName 与 nodeValue 创建相对应的节点。
兼容实现根据传入的移动位置来移动原始节点到目标节点的相应位置。
位置属性如下
[beforebegin]
<div>
[afterbegin]
.....
[beforeend](默认)
</div>
[afterend]
兼容性实现按 filter 要求修改子元素并且移动该元素到目标容器内。
ul.source
- li
- li
- li
ul.target
- li.item0
- li.item1
- li.item2
上述结果的filter方法为:
function filter(index, element){
this.className = 'item' + index;
}
兼容性实现 element dataset 功能,具体实现如下:
elementData(element, dataName);
=> dataValue
elementData(element, dataName, dataValue);
=> element
解析一段 URL,返回一个对象,包含以下属性:
设置 cookie,其中可选的 properties 包含以下属性:
读取 cookie,其中可选的 properties 包含的属性与setCookie一致。
兼容性实现,根据选择器,返回匹配元素数组。选择器只包含
getElementsBySelector('div.box');
兼容性实现 DOM 事件监听。
兼容性实现 DOM 事件解除监听。可选参数情况如下:
以下事件都在 window.onload 之后绑定。
function clickme(){
alert(1);
}
<button id="btn" onclick="clickme()">click me</button>
var $btn = document.getElementById('btn');
$btn.onclick = function(){
alert(2);
};
addEvent($btn, 'click', function(){
alert(3);
});
drag(element).on('dragstrart', function(eve){
// 开始拖拽
}).on('drag', function(eve){
// 拖拽中
}).on('dragend', function(eve){
// 拖拽结束
});
drag(element).on('tap', function(eve){
// 轻触之后
}).on('longtap', function(){
// 长触之后
}).on('dbltap', function(){
// 双触之后
});
DOM 准备完毕之后执行回调
兼容性实现事件频率控制。
window.onload = throttle(function(eve){
// 0
// 123
// 236
// ...
});
window.onload = debounce(function(eve){
// 123
});
配合 addEvent,兼容性实现事件触发器。
addEvent(element, 'myevent', function(a, b, c){
// a = 1
// b = 2
// c = 3
});
dispatchEvent(element, 'myevent', 1, 2, 3);
兼容性实现设置、获取元素的样式。
style(element, 'width'); //=> "100px"
style(element, 'width', 200); //=> "200px"
