具体效果点击查看
具体的js代码如下:
<script>
// 加载数据
// 拼接字符串 "" + ""
// ES6 模板字符串 ` ${} `
var oUl = document.querySelector(".emailListUl");
var oCheckAll = document.querySelector(".emailHead input");
var oCheckSingle = oUl.getElementsByTagName("input");
var oLi = oUl.children;
var oTip = document.querySelector("#hint3");
var oDelBtn = document.querySelector("#delet");
var oBeenDel = document.querySelector(".beenDel");
var oUlHTML = list.map(function (item) {
return `<li>
<input type="checkbox" data-id="${item.id}">
<div>
<span>${item.caption}</span>
<span>${item.time}</span>
</div>
<p>${item.desc}</p>
</li>`
}).join(" ");
oUl.innerHTML = oUlHTML;
// 点击全选
oCheckAll.onclick = function () {
[...oCheckSingle].forEach(function (item) {
item.checked = oCheckAll.checked;
})
if (this.checked) {
[...oLi].forEach(function (item) {
item.style.backgroundColor = "#f2f6f9";
})
} else {
[...oLi].forEach(function (item) {
item.style.backgroundColor = "";
})
}
};
// 点击单选
[...oCheckSingle].forEach(function (item) {
item.onclick = function (ev) {
var ev = ev || event;
var isCheckedAll = [...oCheckSingle].every(function (item) {
return item.checked;
})
oCheckAll.checked = isCheckedAll ? true : false;
this.parentNode.style.backgroundColor = this.checked ? "#f2f6f9" : "";
}
// 阻止点击单选框的时候出现小提示
item.onmousedown = function (ev) {
var ev = ev || event;
ev.stopPropagation ? ev.stopPropagation() : ev.cancelBubble = true;
}
});
// 点击li,出现tips
[...oLi].forEach(function (item) {
item.onmousedown = function (ev) {
// 判断是否被选中
var oInputSingle = this.querySelector("input");
if (!oInputSingle.checked) {
return;
}
var checkedLen = checkedCount().length;
var ev = ev || event;
oTip.style.display = "block";
oTip.style.left = ev.clientX + 3 + "px";
oTip.style.top = ev.clientY + 3 + "px";
oTip.innerText = `选中${checkedLen}封邮件`;
var isCollision = false;
document.onmousemove = function (ev) {
var ev = ev || event;
oTip.style.left = ev.clientX + 3 + "px";
oTip.style.top = ev.clientY + 3 + "px";
if (collision(oTip, oBeenDel)) {
isCollision = true;
}
ev.preventDefault();
}
document.onmouseup = function () {
oTip.style.display = "none";
document.onmousemove = document.onmouseup = null;
if (isCollision) {
del();
}
}
}
})
// 点击删除按钮
oDelBtn.onclick = function () {
del();
}
function checkedCount() {
var checkedArr = [];
[...oCheckSingle].forEach(function (item) {
if (item.checked) {
checkedArr.push(item);
}
})
return checkedArr;
}
function del(){
var checkedArr=checkedCount();
checkedArr.forEach(function(itemInput){
// 删除li结构
itemInput.parentNode.remove();
// 删除数据
list.forEach(function(item,index){
if(itemInput.dataset.id==item.id){
list.splice(index,1);
}
})
console.log(list);
})
}
function getRect(obj){
return obj.getBoundingClientRect();
}
function collision(obj1,obj2){
var obj1Rect = getRect(obj1);
var obj2Rect = getRect(obj2);
//两个矩形碰撞检测
var obj1Left = obj1Rect.left;
var obj1Right = obj1Rect.right;
var obj1Top = obj1Rect.top;
var obj1Bottom = obj1Rect.bottom;
var obj2Left = obj2Rect.left;
var obj2Right = obj2Rect.right;
var obj2Top = obj2Rect.top;
var obj2Bottom = obj2Rect.bottom;
if( obj1Right < obj2Left || obj1Left > obj2Right || obj1Bottom < obj2Top || obj1Top > obj2Bottom ){
return false;
}else{
return true;
}
}
</script>
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。