const result = arr.filter(item => item.state).reduce((sum, item) => { return sum += item.price }, 0)
翻转数组
1 2 3 4 5
var arr = [1, 2, 3, 4]; var newArr = []; for (var i = arr.length - 1; i >= 0; i--) { newArr[newArr.length] = arr[i]; }
作用域
如果在函数内部 没有声明直接赋值的变量 属于全局变量
DOM
一、简介
文档对象模型(Document Object Model)处理可扩展标记语言的标准编程接口
二、获取元素
根据 ID 获取某一个元素
1 2 3 4 5 6 7 8
<body> <inputid="b"type="button"value="clickme"onclick="prompt('输入!')"> <script> var a = document.getElementById('b'); console.log(a);//返回的是一个元素对象 console.dir(a);//打印返回的元素对象 查看属性和方法 </script> </body>
根据标签名获取某一类元素
返回获取的元素对象的集合 以伪数组的形式存储
不管页面中有没有要获取的元素,返回的都是伪数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<body> <ul> <li>你好</li> </ul> <olid = 'ol'> <li>hello</li> </ol> <script> var lis = document.getElementsByTagName('li'); console.log(lis); for (var i = 0; i < lis.length; i++) console.log(lis[i]); //获取某个元素内部所有指定标签名的子元素 var ol = document.getElementById('ol'); console.log(ol.getElementsByTagName('li')); </script> </body>
通过 HTML5 新增的方法获取
querySelector 返回指定选择器的第一个元素对象
querySelectorAll 返回指定选择器的所有元素对象集合
1 2 3 4 5 6 7 8 9 10 11
<olid = 'ol'> <liclass = 'l'>h</li> <liclass = 'l'>hel</li> </ol> <script> var ol = document.getElementsByClassName('l');//通过类名获取元素的集合 var a = document.querySelector('#ol');//通过id var b = document.querySelector('ol');//通过标签名 var c = document.querySelector('.l');//通过类名 var d = document.querySelectorAll('.l'); </script>
特殊元素获取
1 2
var b = document.body; var h = document.documentElement;//获取html标签
<button>hello</button> <p></p> <div>时间</div> <script> var btn = document.querySelector('button'); var di = document.querySelector('div'); //添加事件 btn.onclick = function() { di.innerText = getdate(); } functiongetdate() { var date = newDate(); var year = date.getFullYear(); var month = date.getMonth() + 1; var dates = date.getDate(); var day = date.getDay(); var arr =['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']; return year + '-' + month + '-' + dates + '-' + arr[day]; } //不添加事件 var p = document.querySelector('p'); p.innerText = getdate();
这两个函数适用于普通盒子,如 div 标签
innerText 不识别HTML标签
innerHTML 识别HTML标签
1 2 3 4 5 6 7 8
<div> <strong>时间</strong> </div> <script> var div = document.querySelector('div'); console.log(div.innerHTML);//保留空格和换行 console.log(div.innerText);//去除空格和换行 </script>
var er = document.querySelector('.er'); console.log(er.parentNode);//获取最近的父级节点 var div = document.querySelector('div'); console.log(div.childNodes);//获取子节点 console.log(div.children);//获取子元素节点(常用) console.log(div.firstChild);//获取第一个子节点 //获取最后一个元素节点 console.log(div.lastElementChild); console.log(div.children[div.children.length - 1]);
BOM
Browser Object Model 即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window
<div> <spanclass="day">1</span> 天 <spanclass="hour">2</span> 小时 <spanclass="minute">3</span> 分钟 <spanclass="second">4</span> 秒 </div> <script> var day = document.querySelector('.day'); var hour = document.querySelector('.hour'); var minute = document.querySelector('.minute'); var second = document.querySelector('.second'); var inputTime = +newDate('2022-6-13 17:00:00'); countDown(); setInterval(countDown,1000); functioncountDown() { var nowTime = +newDate(); var times = (inputTime - nowTime) / 1000; var d = parseInt(times / 60 / 60 / 24); d = d < 10 ? '0' + d : d; day.innerHTML = d; var h = parseInt(times / 60 / 60 % 24); h = h < 10 ? '0' + h : h; hour.innerHTML = h; var m = parseInt(times / 60 % 60); m = m < 10 ? '0' + m : m; minute.innerHTML = m; var s = parseInt(times % 60); s = s < 10 ? '0' + s : s; second.innerHTML = s; return d + '天' + h + '时' + m + '分' + s + '秒'; } </script>