前端开发之 DOM 元素

发布于 2021-11-30 13:09:26 字数 5081 浏览 1149 评论 0

兼容性要求:兼容到 IE8

closestElement(element, className)

兼容实现返回从自身开始向上查找符合 className 的最近元素。

elementSiblings(element)

兼容实现返回元素的兄弟元素集合(不包含自身)。

selectChildElement(parentElement, childIndex)

兼容实现选择第几个子元素。

  • childIndex >= 0时,表示子元素正向的索引值。
  • childIndex < 0时,表示子元素的倒数索引值,即-1表示最后一个子元素。

createNode(nodeName[, nodeValue])

根据传入的 nodeName 与 nodeValue 创建相对应的节点。

insert(sourceNode, targetNode[, position])

兼容实现根据传入的移动位置来移动原始节点到目标节点的相应位置。

位置属性如下

[beforebegin]
<div>
[afterbegin]
.....
[beforeend](默认)
</div>
[afterend]

moveChildren(parentElement, target, filter)

兼容性实现按 filter 要求修改子元素并且移动该元素到目标容器内。

ul.source
  - li
  - li
  - li
  
ul.target
  - li.item0
  - li.item1
  - li.item2

上述结果的filter方法为:

function filter(index, element){
    this.className = 'item' + index;
}

elementData(element, dataName[, dataValue])

兼容性实现 element dataset 功能,具体实现如下:

elementData(element, dataName);
=> dataValue
elementData(element, dataName, dataValue);
=> element

parseURL(url)

解析一段 URL,返回一个对象,包含以下属性:

  • href:原始 url
  • protocol:原始 url 协议
  • host:原始 url 域
  • hostname:原始 url 域名
  • port:原始 url 端口
  • pathanme:原始 url 的路径
  • search:原始 url 的查询字符串
  • hash:原始 url 的 hash

setCookie(name, value[, properties])

设置 cookie,其中可选的 properties 包含以下属性:

  • path:设置 cookie 的字段
  • domain:设置 cookie 的域
  • expires:设置 cookie 的过期时间
  • secure:设置 cookie 是否只在 https 下发送给服务端
  • httpOnly:设置 cookie 是否只允许 http 协议可读,即脚本无法直接读取

getCookie(name, value[, properties])

读取 cookie,其中可选的 properties 包含的属性与setCookie一致。

getElementsBySelector(selector[, parentElement])

兼容性实现,根据选择器,返回匹配元素数组。选择器只包含

  • #id
  • .classname
  • tagname
  • 以及三者的组合
getElementsBySelector('div.box');

addEvent(element, eventType, listener)

兼容性实现 DOM 事件监听。

removeEvent(element[, eventType[, listener]])

兼容性实现 DOM 事件解除监听。可选参数情况如下:

  • eventTypelistener都为空时,移除所有通过 addEvent 方法绑定在 element 上的事件。
  • listener为空时,移除所有通过 addEvent 方法绑定在 element 上的 eventType 类型事件。
  • 参数都不为空时,移除listener事件。

事件监听顺序

以下事件都在 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(){
    // 双触之后
});

domReady(fn)

DOM 准备完毕之后执行回调

throttle(fn[, timeout])/debounce(fn[, timeout])

兼容性实现事件频率控制。

  • throttle:每次事件触发回调,必须在上一次触发的 timeout 毫秒之后。
  • debounce:最后一次事件触发回调,必须在最后一次触发的 timeout 毫秒之后。
  • timeout:默认为 123ms。
window.onload = throttle(function(eve){
    // 0
    // 123
    // 236
    // ...
});
window.onload = debounce(function(eve){
    // 123
});

dispatchEvent(element, eventType[, eventArg0, eventArg1, ...])

配合 addEvent,兼容性实现事件触发器。

addEvent(element, 'myevent', function(a, b, c){
    // a = 1
    // b = 2
    // c = 3
});
dispatchEvent(element, 'myevent', 1, 2, 3);

style(element, styleKey, styleVal)

兼容性实现设置、获取元素的样式。

style(element, 'width'); //=> "100px"
style(element, 'width', 200); //=> "200px"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

疑心病

暂无简介

0 文章
0 评论
503 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文