javascript - 为什么我用removeChild()删除不了节点呢?
高洛峰
高洛峰 2017-04-11 12:35:59
[JavaScript讨论组]

慕课网清风老师的《弹出层效果》这部教程中。http://www.imooc.com/learn/58

当点击登陆按钮时候,生成一个透明度为50%的‘遮罩层’和一个登陆框。这个已经成功实现了,没有问题。

但是,现在我想点击关闭按钮,关闭遮罩层和登陆框。(见77-83行代码)我用removeChild来删除之前生成的节点却不成功,请问是哪里出问题了?
效果如下动态图:





慕课网-弹出层






慕课网

换一种方式

来学习互联网编程

超酷的IT技术免费学习平台

进入 了解更多

每一节课都有一种新奇的感觉

点击进入

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
天蓬老师

换一种方式思考,半透明的遮罩层、关闭按钮、login模块不用js来添加,在DOM里写好 设置display:none,什么时候要显示js设置为block,也不会妨碍页面加载时获取它们的id
那就这样写:
var sheight=document.documentElement.scrollHeight;//获取页面高度
var swidth =document.documentElement.scrollWidth;//获取页面宽度

var wheight=document.documentElement.clientHeight;//获取可视区域的高度
var wwidth=document.documentElement.clientWidth;//获取可视区域的宽度

var obtn=document.getElementById('btnLogin');//抓取id为btnLogin的登陆按钮

obtn.onclick=function (){//点击登陆按钮时创建 1.遮罩层; 2.创建登陆框

var omask=document.createElement('p');//创建一个'遮罩层'p
omask.id='mask';//设定p的id为mask
omask.style.height=sheight+'px';//给遮罩层设定高度为页面高度
omask.style.width=swidth+'px';//给遮罩层的宽度设定为页面宽度
document.body.appendChild(omask);//把创建好的omask节点插入到页面中

var ologin=document.createElement('p');//创建一个'登陆框'p
ologin.id='login';//设定该p的id为login

ologin.innerHTML="<p class='loginCon'><p id='close'></p></p>";
document.body.appendChild(ologin);//将ologin节点插入到页面中
/*
 下面两行是给ologin做定位,使其永远在页面的中心位置
 top为 (可视高度-ologin高度)/2
 width为 (可视宽度-ologin宽度)/2
 */
ologin.style.top=(wheight-ologin.offsetHeight)/2+'px';
ologin.style.left=(wwidth-ologin.offsetWidth)/2+'px';
closeThis(omask,ologin);

}
function closeThis(node,log){

var oclose=document.getElementById('close');//获取id为close的关闭按钮。注:该按钮在之前点击登陆按钮建立的登陆框上
oclose.onclick=function (){//当点击关闭按钮时,执行1.删除遮罩层;2.删除登陆框
    document.body.removeChild(node);
    document.body.removeChild(log);
}

}

PHPz

因为压根找不到close这个btn啊。
你得在渲染完这个overlay之后才能找到close这个btn 再执行。因为是跑完代码,你的closebtn还没写进去呢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号