html+js removeChild和addChild控制遮罩層

最近想做一個html5+sqlite的應用,需要做一個遮罩層作為模態輸入、修改數據UI,現已成功實現

在其他網站找到的遮罩層js代碼,主要是使用addChild和removeChild來處理,隨便編輯都可以,忘記是從哪裡copy下來了,對不起了原作


<script type="text/javascript">

       var docEle = function() {
           return document.getElementById(arguments[0]) || false;
       }


       function openNewDiv(_id) {
           var m = "mask";
           if (docEle(_id)) document.body.removeChild(docEle(_id));
           if (docEle(m)) document.body.removeChild(docEle(m));


           //mask遮罩层


           var newMask = document.createElement("div");
           newMask.id = m;
           newMask.style.position = "absolute";
           newMask.style.zIndex = "1";
           _scrollWidth = Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);
           _scrollHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
           newMask.style.width = _scrollWidth + "px";
           newMask.style.height = _scrollHeight + "px";
           newMask.style.top = "0px";
           newMask.style.left = "0px";
           newMask.style.background = "#33393C";
           newMask.style.filter = "alpha(opacity=40)";
           newMask.style.opacity = "0.40";
           document.body.appendChild(newMask);


           //新弹出层


           var newDiv = document.createElement("div");
           newDiv.id = _id;
           newDiv.style.position = "absolute";
           newDiv.style.zIndex = "9999";
           newDivWidth = 400;
           newDivHeight = 200;
           newDiv.style.width = newDivWidth + "px";
           newDiv.style.height = newDivHeight + "px";
           newDiv.style.top = (document.body.scrollTop + document.body.clientHeight / 2 - newDivHeight / 2) + "px";
           newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth / 2 - newDivWidth / 2) + "px";
           newDiv.style.background = "#EFEFEF";
           newDiv.style.border = "1px solid #860001";
           newDiv.style.padding = "5px";
           newDiv.innerHTML = "弹出层内容 ";


           document.body.appendChild(newDiv);


           //弹出层滚动居中


           function newDivCenter() {
               newDiv.style.top = (document.body.scrollTop + document.body.clientHeight / 2 - newDivHeight / 2) + "px";
               newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth / 2 - newDivWidth / 2) + "px";
           }
           if (document.all) {
               window.attachEvent("onscroll", newDivCenter);
           }
           else {
               window.addEventListener('scroll', newDivCenter, false);
           }


           //关闭新图层和mask遮罩层


           var newA = document.createElement("a");
           newA.href = "#";
           newA.innerHTML = "关闭";
           newA.onclick = function() {
               if (document.all) {
                   window.detachEvent("onscroll", newDivCenter);
               }
               else {
                   window.removeEventListener('scroll', newDivCenter, false);
               }
               document.body.removeChild(docEle(_id));
               document.body.removeChild(docEle(m));
               return false;
           }
           newDiv.appendChild(newA);
       }
openNewDiv("newDiv");
</script>


 


调用<a οnclick="openNewDiv('newDiv');return false;" style="cursor:pointer">显示弹层</a>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用HTMLJS和CSS实现的购物车完整代码示例: HTML部分: ```html <!DOCTYPE html> <html> <head> <title>购物车</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>购物车</h1> <table id="cart"> <thead> <tr> <th>商品</th> <th>数量</th> <th>单价</th> <th>小计</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>商品1</td> <td><input type="number" value="1"></td> <td>10.00</td> <td>10.00</td> <td><button class="remove">删除</button></td> </tr> <tr> <td>商品2</td> <td><input type="number" value="1"></td> <td>20.00</td> <td>20.00</td> <td><button class="remove">删除</button></td> </tr> </tbody> <tfoot> <tr> <td colspan="3">合计:</td> <td id="total">30.00</td> <td></td> </tr> </tfoot> </table> <script src="script.js"></script> </body> </html> ``` CSS部分(style.css): ```css body { font-family: Arial, sans-serif; } h1 { text-align: center; } table { width: 100%; border-collapse: collapse; } th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; } tfoot td { font-weight: bold; } input[type="number"] { width: 50px; } button.remove { background-color: #f44336; color: white; border: none; padding: 5px 10px; cursor: pointer; } ``` JS部分(script.js): ```javascript window.onload = function() { var cartTable = document.getElementById('cart'); var tr = cartTable.getElementsByTagName('tr'); var removeBtns = cartTable.getElementsByClassName('remove'); var total = document.getElementById('total'); // 计算合计 function getTotal() { var selected = 0; var price = 0; for (var i = 0, len = tr.length; i < len; i++) { if (tr[i].getElementsByTagName('input')[0].checked) { selected += parseInt(tr[i].getElementsByTagName('input')[1].value); price += parseFloat(tr[i].cells[3].innerHTML); } } total.innerHTML = price.toFixed(2); } // 删除商品 function removeProduct() { var currentTr = this.parentNode.parentNode; currentTr.parentNode.removeChild(currentTr); getTotal(); } // 绑定删除按钮的点击事件 for (var i = 0, len = removeBtns.length; i < len; i++) { removeBtns[i].onclick = removeProduct; } // 监听数量输入框的变化 for (var i = 0, len = tr.length; i < len; i++) { tr[i].getElementsByTagName('input')[1].onchange = getTotal; } }; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值