一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情。
复选框给不了选中状态
解决方案:
1、eachChecked[i] = allChecked(判断单独写)
2、eachChecked[i] = true
单个复选框勾选无法影响到整体的
原因:这里不能直接用判断去操作,因为还有后续的效果;每次都需要遍历全部去判断是否全选再加事件(return退出函数)
购物车数量改变数值无法生效
原因:由于是要改变数值,要用到value属性,其次目前自增前加后加没区别,因为不涉及计算
一个数组绑定事件必须遍历
通过监测点击得到对应的下标,从而进行事件的操作
当动态添加类时利用this
(1)首先移除之前默认添加的类
(2)添加点击的事件
获取价格时,带单位不容易操作
<td class="price">35¥</td>
解决方法: parseInt(s_total[i].innerHTML) ,可以过滤掉单位
一个有趣的发现,js可以用id直接调用
就像这样,name也可以
但是不规范,所以尽量不要用
使用remove()函数的错误:
使用语句:
del[i].addEventListener('click', function() {
tb.children[i].remove()
alert(i)
checks[i].checked = false
result()
})
导致无法删除最后一个,并报错显示未定义
原因:删除后会改变i的值导致无法查找到实际的删除位置,因此不要用这个
解决方案:替换成
tb.removeChild(this.parentNode.parentNode)
渲染数据重复
这里使用了追加元素,导致重复,解决方案: 渲染前加:
批量删除数据,使用事件委托如何确定删除的元素下标
e.target只能获取到大目标
因此,可以给删除标签添加id=${i},用id获取下标
无内容也可以提交
Html5中新增的required属性可以应用在大多数输入元素上,在提交时。如果元素中内容为空白,则不允许提交,同事在浏览器中显示信息提示文字。
// 这里如果用户没输入,就不能给他判断(change)
pwd.addEventListener('change', verifypwd)
// contains可以验证是否有这个类
if (!agree.classList.contains('icon-queren2')) {
alert('请勾选同意协议')
//ev.preventDefault()阻止自动提交
ev.preventDefault();
}