11个常见ES6代码使用

1. 隐藏所有元素

<div>
    <img src="user.jpg">
    <img src="user.jpg">
    <img src="user.jpg">
    <img src="user.jpg">
    <img src="user.jpg">
    <img src="user.jpg">
</div>

使用了 三个点称为扩展运算符,简单理解就是用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。

// 隐藏所有指定元素
const hideEl = (el)=>[...el].forEach(e=>e.style.display = "none")
hideEl(document.querySelectorAll('img'))

2. 确定元素具有指定的类

<div>
    <p class="special">测试指定类</p>
</div>

contains是js中原生的方法 并不是判断字符串,仅用于判断DOM元素的包含关系,参数是Element类型。

// 如何确定元素是否具有指定的类
const hasClass = (el,className) => el.classList.contains(className);
console.log(hasClass(document.querySelector("p"),"special"))//true
// hasClass(document.querySelector("p"),"special");

3. 获取当前元素的滚动位置

<div style="height: 1920px;width: 2980px">
    <p>获取当前页面的滚动位置</p>
</div>

pageXOffsetpageYOffset属性返回文档在窗口左上角水平和垂直方向滚动的像素。

// 获取当前页面的滚动位置
const getScrollPosition = (el = window) => ({
    x:el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
    y:el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
})
console.log(getScrollPosition())

4. 确认父元素是否包含子元素

// 确认父元素是否包含子元素
const elementContains = (parent, child) => parent !== child && parent.contains(child);
const isTitle = elementContains(document.querySelector("head"),document.querySelector("title"));
const isBody = elementContains(document.querySelector("body"),document.querySelector("body"));
console.log(isTitle,isBody) // true false

5. 如何分辨设备是移动设备还是桌面设备

// 如何分辨设备是移动设备还是桌面设备
const deviceType = () => /Andriod|webOS|iPhone|iPad|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
console.log(deviceType())

6. 获取当前URL

// 获取当前URL
const currentURL = () => window.location.href;
console.log(currentURL());

7. 创建一个包含当前URL参数的对象

reduce方法接收一个函数作为累加器,数组中的每个值从左到右开始缩减,最终计算为一个值,对于空数组是不会执行回调函数的。
slice 从已有的数组中返回选定的元素,不会修改数组

// 创建一个包含当前URL参数的对象
const getURLParam = url => (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce((a,v) => ((a[v.slice(0, v.indexOf("="))] = v.slice(v.indexOf("=")+1)),a),{});
console.log(getURLParam("http://url.com/page?user=admin&name=join")) // {user:"admin",name:"join"}

8. 在等待一定时间后调用提供的函数

// 在等待一定时间后调用提供的函数
const delay = (fn, wait, ...args) => setTimeout(fn, wait, ...args)
delay(text=>{
    console.log(text)
},1000,"later");// 一秒后 later

9. 在给定元素上触发特定事件,且可传递自定义数据

dispatchEvent给节点分派一个合成事件,调用该方法的节点将称为事件的目标节点,该事件在捕捉阶段中第一次沿着文档树向下传播,如果该事件的bubbles属性为 true,那么在事件的目标节点自身处理事件后,它将沿着文档树向上起泡。

// 在给定元素上触发特定事件,且可传递自定义数据
const triggerEvent = (el,eventType,detail) => el.dispatchEvent(new CustomEvent(eventType, {detail}));
triggerEvent(document.getElementById('myBox'),"click",{username:"join"})

10.获得给定毫秒数的可读格式

// 获得给定毫秒数的可读格式
const formatDuration = ms => {
    if(ms < 0) ms = -ms;
    const time = {
        day:Math.floor(ms / 86400000),
        hour:Math.floor(ms / 3600000) % 24,
        minute:Math.floor(ms / 60000) % 60,
        second:Math.floor(ms / 1000) % 60,
        millisecond:Math.floor(ms) % 1000
    };
    return Object.entries(time).filter(val => val[1] !== 0).map(([key, val]) => `${val} ${key} ${val !==1 ? "s" : ""}`).join(",");
}
console.log(formatDuration(354578245451)); // 4103 day s,21 hour s,57 minute s,25 second s,451 millisecond 

11. 获取两个日期之间的天数间隔

// 获取两个日期之间的天数间隔
const getDayInterval = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24);
const data = getDayInterval(new Date("2020-12-13"), new Date("2020-12-31"));
console.log(data); // 18
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值