美文网首页
2021-06-17 // 1. 如何隐藏所有指定的元素

2021-06-17 // 1. 如何隐藏所有指定的元素

作者: 半眼鱼 | 来源:发表于2021-06-17 10:02 被阅读0次
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    
</body>
</html>

<script type="text/javascript">
    // 1. 如何隐藏所有指定的元素
    const hide = (el)=>Array.from(el).forEach(e=>(e.style.display = 'none'));
    //示例:隐藏页面上所有‘<img>’元素
    hide(document.querySelectorAll('img'))
    // 2.如何检查元素是否具有指定的类?
    
    const hasClass = (el,className)=>el.classList.contains(className);
    
    //示例
    hasClass(document.querySelector('p.special'),'special') //true
    
    // 3.如何切换一个元素的类?
     const toggleClass=(el,className) =>el.classList.toggle(className);
     
     // 事例 移除 p 具有类`special`的 special 类
     toggleClass(document.querySelector('p.special'),'special');
     // 4.如何获取当前页面的滚动位置?
     
     const getScrollPosition(el = window)=>({
         x:el.pageXOffset !==undefined?el.pageXOffset:el.scrollLeft,
         y:el.pageYOffset !==undefined?el.pageYOffset:el.scrollTop
     })
     
     //示例
     getScrollPosition();
     
     
     // 5.如何平滑滚动到页面顶部?
     const scrollToTop=()=>{
         const c = document.documentElement.scrollTop ||document.body.scrollTop;
         if(c>0){
             window.requestAnimationFrame(scrollToTop);
             window.scrollTo(0,c-c/8);
         }
     }
     
     // 示例
     scrollToTop()
     
     
     // 6.如何检查父元素是否包含子元素?
     const elementContains = (paraent,child)=> parent !==child&&parent.contains(child);
     
     // 示例
     elementContains(document.querySelector('head'),document.querySelector('taitle'))
     
     
     // 7.如何检查指定的元素在视口中是否可见?
     const elementIsVisibleInViewport = (el,partiallyVisible = false)=>{
         const {top, left,bottom,right} = el.getBoundingClientRect();
         
         const {innerHeight, innerWidth} = window
         
         return partiallyVisible
                ?((top>0&&top<innerHeight)||(bottom>0&&bottom<innerHeight))&&((left>0&&left<innerWidth)||(right>0&&right<innerWidth))
                :top>=0&&left>=0&&bottom<=innerHeight&&right<=innerWidth;
     }
     
     
     // 示例
     elementIsVisibleInViewport(el);//需要左右可见
     
     elementIsVisibleInViewport(el,true); //需要全屏可见
     
     // 8.如何获取元素中的所有图像
     const getImages = (el,includeDuplicates = false)=>{
         const images=[...el.getElementsByTagName('img')].map((img)=>img.getAttribute('src'));
         return includeDuplicates?images:[...new Set(images)];
     }
     // 事例:includeDuplicates 为 true 表示需要排除重复元素
     getImages(document, true); // ['image1.jpg', 'image2.png', 'image1.png', '...']
     getImages(document, false); // ['image1.jpg', 'image2.png', '...']
     
     
    // 9.如何确定设备是移动设备还是台式机/笔记本电脑?
    
    const detectDeviceType=()=>Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?'Mobile':'Desktop';
    
    // 示例
    detectDeviceType();
    
    // 10.如何获取地址URL
    const currentURL = ()=>window.location.href
    // 示例
    currentURL()
    
    // 11.如何创建一个包含当前URL参数的对象?
    const getURLParameters = url=>(
        (url.match(/([^?=&]+)(=(^&]*))/g)||[]).reduce((a,v)=>((a[v.slice(0,v.indexOf('='))]=v.slice(v.indexOf('=')+1)),a),{})
    )
    
    // 事例
    getURLParameters('http://url.com/page?n=Adam&s=Smith'); // {n: 'Adam', s: 'Smith'}
    getURLParameters('google.com'); // {}
    
    // 12.如何将一组表单子元素转化为对象?
    
    const formToObject = form =>
    Array.from(new FormData(form)).reduce((acc,[key,value])=>({
        ...acc,
        [key]:value
    }),{})
    
    // 示例
    formToObject()

    // 13.如何从对象检索给定选择器指示的一组属性
    const get = (form,...selectors)=>[...selectors].map(s=>s.replace(/\[([^\[\]]*)\]/g,'.$1.').split('.').filter(t=>t!=='').reduce((prev,cur)=>prev&&prev[cur],from));
    
    const obj = { selector: { to: { val: 'val to select' } }, target: [1, 2, { a: 'test' }] };
    
    // Example
    get(obj, 'selector.to.val', 'target[0]', 'target[2].a'); 
    // ['val to select', 1, 'test']

    // 14.如何在等待指定时间后调用提供的函数
    const delay = (fn,wait,...args)=>setTimeout(fn,wait,...args);
    
    delay(function(text){
        console.log(text)
    },1000,'later')
    
    // 1秒后打印 'later'
    
    // 16.如何从元素中移除事件监听器
    const off = (el,evt,fn,opts)=>el.removeEventListener(evt,fn,opts);
    
    const fn =()=>console.log('!');
    
    document.body.addEventListener('click',fn);
    
    off(document.body,'click',fn)
    
    
    // 18.如何获得两个日期之间的差异 (以天为单位) ?
    
    const getDaysDiffBetweenDates = (dateInitial,dateFinal)=>(dateFinal-dateInitial)/(1000*3600*24);
    
    // 示例
    getDaysDiffBetweenDates(new Date('2017-12-13'), new Date('2017-12-22'));
    
    // 22.如何将字符串复制到剪贴板 ?
    const el = document.createElement('textarea');
      el.value = str;
      el.setAttribute('readonly', '');
      el.style.position = 'absolute';
      el.style.left = '-9999px';
      document.body.appendChild(el);
      const selected =
        document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;
      el.select();
      document.execCommand('copy');
      document.body.removeChild(el);  
      if (selected) {
        document.getSelection().removeAllRanges();
        document.getSelection().addRange(selected);
      }
    };
    
    // 事例
    copyToClipboard('Lorem ipsum'); 
    // 'Lorem ipsum' copied to clipboar
    
// 23.如何确定页面的浏览器选项卡是否聚焦 ?
const isBrowserTabFocused = () => !document.hidden;

// 事例
isBrowserTabFocused(); // true
    
    // 24. 如何创建目录 (如果不存在) ?
       const fs = require('fs');
    const createDirIfNotExists = dir => (!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined);
    
    // 事例
    createDirIfNotExists('test'); 

    
</script>

相关文章

  • ES function - 常见的JS问题

    1.如何隐藏所有指定的元素forEach && display = 'none' 2.如何检查元素是否具有指定的类...

  • es6实用方法

    1.如何隐藏所有指定的元素 2.如何检查元素是否具有指定的类? const hasClass = (el, cla...

  • 2021-06-17 // 1. 如何隐藏所有指定的元素

  • 24 个 ES6 方法,

    标签: ES6 正文 1.如何隐藏所有指定的元素 2.如何检查元素是否具有指定的类? 3.如何切换一个元素的类? ...

  • 记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题

    1.如何隐藏所有指定的元素 2.如何检查元素是否具有指定的类? 3.如何切换一个元素的类? 4.如何获取当前页面的...

  • es6开发常用技巧

    1.如何隐藏所有指定的元素 2.如何检查元素是否具有指定的类? 页面DOM里面的每个节点上都有一个 $\color...

  • 24个解决实际问题的ES6代码段

    1、如何隐藏所有指定元素? 2、如何确认元素是否具有指定的类? 3、如何切换元素的类? 4、如何获取当前页面的滚动...

  • JS常用工具方法(长文慎入)

    如何隐藏所有指定的元素 如何检查元素是否具有指定的类? 页面DOM里的每个节点上都有一个classList对象,程...

  • 一些好用的代码

    隐藏所有指定的元素 检查元素是否具有指定的类 如何切换一个元素的类? 获取当前页面的滚动位置 平滑滚动到页面顶部 ...

  • jQuery 动画

    动画函数 .show()/.hide() 函数用于显示/隐藏所有匹配的元素。此外,还可以指定元素显示的过渡动画效果...

网友评论

      本文标题:2021-06-17 // 1. 如何隐藏所有指定的元素

      本文链接:https://www.haomeiwen.com/subject/hjnqyltx.html