1 分钟学 6 个常见的 DOM 基础操作(二)

39a6489efee58d39b2f50a6f4aba2b84.png

大家好,今天我们来花 1 分钟来学习 DOM 相关的基础操作的第二部分,内容虽然简单,但是还是有必要归纳总结的,希望这些整理对大家有所帮助。

1、判断浏览器是否支持触摸事件(touch events)

判断当前浏览器是否支持 touch events,示例代码如下:

const touchSupported = 'ontouchstart' in window || (window.DocumentTouch && document instanceof DocumentTouch);

2、克隆DOM元素

const cloned = ele.cloneNode(true);

使用 cloneNode(true) 方法将会深拷贝给定的 DOM 元素,所有的属性包含子节点的属性和事件都将拷贝。(即它还将递归复制当前节点的所有子孙节点。)

如果使用 false 将拷贝DOM元素的节点,并不会复制其属性和值。

const cloned = ele.cloneNode(false);

3、计算文本输入框(textarea)的字符串长度

假设我们 HTML 页面只包含了一个文本输入框 textarea  和  div  显示文本长度的容器,提示用户已输入的字符串长度。

<textarea id="message"></textarea>
<div id="counter"></div>

3.1 使用 maxlength 属性

使用 maxlength 属性限制用户文本输入内容的长度

<textarea maxlength="200" id="message"></textarea>

3.2 计算用户已输入的内容长度

使用input 事件监听文本输入框内容的改变,并计算文本输入的长度,代码如下:

const messageEle = document.getElementById('message');
const counterEle = document.getElementById('counter');

messageEle.addEventListener('input', function (e) {
    const target = e.target;

    // Get the `maxlength` attribute
    const maxLength = target.getAttribute('maxlength');

    // Count the current number of characters
    const currentLength = target.value.length;

    counterEle.innerHTML = `${currentLength}/${maxLength}`;
});

小贴士:

你也许会使用 keyup 监听事件,它可能在以下场景不起作用 

1、将文本拖入到输入框 

2、点击鼠标右键复制文本内容到输入框

4、创建 DOM 元素

4.1 创建DOM元素

const ele = document.createElement('div');

4.2 创建文本元素

const ele = document.createTextNode('Hello World!');

5、添加只执行 1 次的事件

5.1 使用 once 属性

绑定 DOM 事件时,我们可以在第三个参数上,添加  { once: true } 属性,确保此事件只执行 1 次。

const handler = function (e) {
    // The event handler
};
ele.addEventListener('event-name', handler, { once: true });

小贴士:

IE不支持此属性

5.2 移除元素指定的事件

const handler = function (e) {
    // The event handler
    // Do something ...

    // Remove the handler
    e.target.removeEventListener(e.type, handler);
};

ele.addEventListener('event-name', handler);

6、监测指定元素的外部点击

有时我们需要监测是不是在指定的元素的外部点击,比如弹出层,我们在弹出层的外部空白处点击,用于关闭弹出层,就需要监测外部点击的判断。

document.addEventListener('click', function (evt) {
    const isClickedOutside = !ele.contains(evt.target);

    // `isClickedOutside` 返回 true 则表示点击事件发生在指定元素的外部
});

总结

由于时间原因,今天分享的 DOM 基础操作专题就分享到这里,感谢你的阅读。

来源:https://github.com/1milligram/html-dom

相关阅读

1分钟搞懂什么是 JS 代理对象(proxies)

1分钟学会如何用 JS 对象代理(proxies)实现对象的私有属性

1分钟学会 2 个复制文本到剪贴板的方法

1分钟学会如何用 JS 计算文本的宽度

1分钟学会个通用妙招,让你知道用户看了啥

1分钟用 CSS + HTML 实现个按字母吸附滑动的列表(类似手机通讯录列表)

「1分钟学JS基础」移除最后一个字符、Promise.allSettled()的使用、日期数组排序

「1 分钟学 DOM 基础操作」添加和移除元素样式、添加至元素内、添加和移除事件、计算鼠标相对元素的位置

1 分钟学 6 个常见的 DOM 基础操作(一)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值