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 下拉选框
var osel = document.querySelector('#sel')
console.log(osel.value);
osel.value = 3
当选项发生改变时触发事件
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.8
return 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>