为什么关闭按钮没有出来啊

为什么关闭按钮没有出来啊

<style>

body{

background-color: #f0f0f0;

}

#loginLayer{

position:absolute;

left: 240px;

top: 80px;

width: 200px;

height: 200px;

z-index: 2;

border:1px solid #ccc;

background-color: #fff;

text-align: center;

}

#maskLayer{

position:absolute;

left: 0;

top: 0;

width: 100%;

height: 100%;

background-color: #000;

opacity:0.3;

}

#loginClose{

position:absolute;

left: 200px;

top: 0;

width: 30px;

height: 30px;

z-index: 3;

border:1px solid #ccc;

background-color: #ccc;

text-align: center;

}

</style>

<button id="loginBtn">登录</button>

//创建节点的函数

function createLoginLayer(){  //登录窗口节点函数

var loginLayer = document.createElement('div');

loginLayer.id = 'loginLayer';

loginLayer.innerHTML = '登录窗口';

loginLayer.style.display = 'none';

document.body.appendChild(loginLayer);

return loginLayer;

}

function createMaskLayer(){ //弹出层的节点函数

var maskLayer = document.createElement('div');

maskLayer.id = 'maskLayer';

maskLayer.style.display = 'none';

document.body.appendChild(maskLayer);

return maskLayer;

}

function createLoginClose(){

var loginClose = document.createElement('span');

loginClose.id = loginClose;

loginLayer.innerHTML = '×';

loginClose.style.display='none';

document.body.appendChild(loginClose);

return loginClose;

}

//创建单例模式的函数

function getSingleton(fn){//fn节点函数

var instance = null;  //保证函数的单一性

return function () { //返回一个函数 作为返回值

return instance || (instance = fn())  //2二选一的或运算 instance存在 就返回一个null,不存在就返回instance=fn()函数

};

}

var createSingletonLoginLayer = getSingleton(createLoginLayer);

var createSingletonMaskLayer = getSingleton(createMaskLayer);

var createSingletonloginClose = getSingleton(createLoginClose);

document.getElementById('loginBtn').onclick = function (){

var loginLayer = createSingletonLoginLayer();

var maskLayer = createSingletonMaskLayer();

var loginClose = createSingletonLoginLayer();

loginLayer.style.display = 'block';

maskLayer.style.display = 'block';

loginClose.style.display='block';

};


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
怎么都被占用了呢 2018-03-12 16:06:08

除了修改di的值,关闭按钮内的内容“X”也放错了位置,请如下修改

http://img1.sycdn.imooc.com//climg/5aa634a40001e0dd09980393.jpg

然后就可以绑定单击事件了

http://img1.sycdn.imooc.com//climg/5aa634ba00011a2f10150545.jpg

你的这个代码,好多处逻辑对不上,多是单词错误,请以后认真些吧。

怎么都被占用了呢 2018-03-12 13:54:01

因为你定义id的时候,它的值是个变量,变量的值是个节点。

http://img1.sycdn.imooc.com//climg/5aa615e60001d83c09280349.jpg

加个引号就是字符串了。

  • 提问者 金沙熊飞 #1
    var close = document.getElementById('loginClose'); console.log(close); close.onclick = function(){ loginLayer.style.display = 'none'; maskLayer.style.display = 'none'; loginClose.style.display='none'; } 这个为什么没有绑定上事件啊,是一个null
    2018-03-12 15:38:46
怎么都被占用了呢 2018-03-11 16:37:38

调用的函数名要和定义的一致哦

http://img1.sycdn.imooc.com//climg/5aa4eacf0001a2d107600309.jpg

  • 提问者 金沙熊飞 #1
    为什么关闭按钮的id怎么会是[object HTMLSpanElement],这点我看不懂啦
    2018-03-12 11:23:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师