DOM操作表单 数组API扩展

DOM 操作表单
表单元素
输入框、密码框、下拉选框、多选框、单选框
表单操作
input 输入框
获取设置值 value
var inp = document.querySelector('input')
console.log(inp.value);
inp.value = '123'
input 的事件
-
input
当input元素内容发生改变时触发事件
var inp = document.querySelector('input')inp.addEventListener('input',function(){console.log(inp.value);})
- change
当input元素内容发生改变并失去焦点时触发事件
var inp = document.querySelector('input')inp.addEventListener('change',function(){console.log(inp.value);})
-
blur
当标签失去焦点时触发事件
-
focus
当标签获取到焦点时触发事件
var inp = document.querySelector('input')inp.addEventListener('blur',function(){console.log(111111111);})inp.addEventListener('focus',function(){console.log(22222222222);})
select 下拉选框
获取设置值:value
var osel = document.querySelector('#sel')console.log(osel.value);osel.value = 3
change事件
当选项发生改变时触发事件
var osel = document.querySelector('#sel')osel.addEventListener('change',function(){console.log(osel.value);})
单选框 复选框
页面上不知一个单选框或者多选框,我们需要遍历每一个单选框或者多选框进行设置事件,事件一半使用click或者change事件来得到选中的结果
选中状态
选择中状态
单选框和多选框在判断的时候需要通过js确定当前标签是否选中,可以使用checked进行判断
var check = document.querySelectorAll('[name=aaa]')console.log(check);var checkeds = []for(var i = 0;i<check.length;i++){check[i].addEventListener('click',function(){console.log(this.checked);if(this.checked){checkeds.push(this.value)console.log(checkeds);}})}
数组API
参考网址:JavaScript Array 对象 | 菜鸟教程
filter()
遍历数组,并返回满足条件的数据组成的一个新数组
var arr = [1, 2, 3, 4, 5, 6, 7, 8]//赛选 数字大于3的所有元素// var filArr = arr.filter(function(item,index,array){// console.log('item:',item);// console.log('index:',index);// console.log(array);// return item > 3// })// console.log(filArr);var filArr2 = arr.filter(item => item > 4)console.log(filArr2);
适用案例
1.筛选出 价格大于30的产品
2.购物车 删除所有选中的商品 我们可以返回没有选择的商品 赋值给原来的数组
some()
检测数组元素中是否有元素符合指定条件。
var users = [{name:'admin',pwd:'123456'},{name:'admin2',pwd:'123456'},{name:'admin3',pwd:'123456'}]var inArr = users.some(item => item.name=='admin2'&&item.pwd == '123456')console.log(inArr);
sort()
对数组的元素进行排序。
var arr = [{id:1,price:30},{id:2,price:40},{id:3,price:70},{id:4,price:10}]var sortArr = arr.sort((a,b)=>a.price-b.price)console.log(sortArr);
map()
通过指定函数处理数组的每个元素,并返回处理后的数组。
var arr = [{ id: 1, price: 30 }, { id: 2, price: 40 }, { id: 3, price: 70 }, { id: 4, price: 10 }]var mapArr = arr.map(item => {item.price *= 0.8return item})console.log(mapArr);
forEach()
数组专属遍历,替代for循环
数组.forEach((item,index,array)=>{// item:数组中每次循环取出来的数据//index:遍历的下标//array:原数组})
案例
function render(){let dom = ''goodsList.forEach(item =>{dom += `<a onclick="del(this)" href="javascript:;"><dl><dt><span class="abl"></span><img src="${item.img}"/><span class="abr"></span></dt><dd>${item.title}</dd><dd><span>¥${item.price}.00</span></dd></dl></a>`})// for (var i = 0; i < goodsList.length; i++) {// dom += `// <a onclick="del(this)" href="javascript:;">// <dl>// <dt>// <span class="abl"></span>// <img src="${goodsList[i].img}"/>// <span class="abr"></span>// </dt>// <dd>${goodsList[i].title}</dd>// <dd><span>¥${goodsList[i].price}.00</span></dd>// </dl>// </a>// `// }goodsBox.innerHTML = dom}
三目运算符(拓展)
又称作三元运算符,用于根据条件来决定执行不同的代码
条件 ? 满足条件返回值 : 不满足条件返回值var num = prompt('请输入一个数字')console.log(num>10 ? '大于10' : '小于10');
适用案例
判断选中状态
<label class="fl" ><span class="${item.ischecked?'spanAct':'span'}" onclick="change(${index})"></span></label>
