javascript代码有问题.灯箱没有第二次打开
Having issue in javascript code. light box does not open second time
我有一个代码打开灯箱时,用户点击一个链接。它所做的是打开灯箱,然后当用户点击overlay
时,它关闭或隐藏覆盖和灯箱。但是当用户再次点击链接再次打开灯箱时,它不会打开。这是我的代码
var el = document.getElementById('element');
var body = document.getElementsByTagName('body');
el.innerHTML = '<p><a id="clickme" href="#">Click me</a></p>';
document.getElementById('clickme').onclick = function (e) {
e.preventDefault();
if (overlay) {
overlay.style.display = 'block';
} else {
document.body.innerHTML = '<div id="overlay" style="display:block;position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>'+document.body.innerHTML;
}
document.body.innerHTML = '<iframe id="frame" style="position:absolute;display:block;z-index:101;width:50%;height:50%;margin:10% 20%;border:10px solid #ccc;border-radius:10px;" src="http://www.example.com/"></iframe>'+document.body.innerHTML;
document.getElementById('overlay').onclick = function() {
document.getElementById('overlay').style.display = 'none';
document.getElementById('frame').style.display = 'none';
}
}
当用户第二次点击链接时,我如何再次打开这个灯箱?
您将style
设置为display:none
关闭,但单击链接不会改变display
属性。效果:盒子保持不可见
简单的解决方案:在开始函数中添加display:block
或任何你需要的东西。
另外:每次执行时,你的开始函数将创建一个新的元素。您可以添加一个测试来防止这种情况:
var overlay = document.getElementById('overlay');
if(overlay){
overlay.style.display = 'block';
} else {
//create box
}
问题是,只要您通过添加或替换document.body编辑DOM。innerHTML,元素上的事件(你的a href)将不再存在。您需要在执行document.body.innerHTML.
相关文章:
- Javascript Select OnChange没有'不要第二次工作
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 单击仅在第二次单击后有效
- 推特引导:弹出窗口不会在第一次点击时出现,但会在第二次点击时显示
- 第二次点击具有不同功能的按钮并更改文本
- 更改第二次推送时不起作用的元素高度
- 在第二次选择中选择2更改属性
- 可能只在for循环内部运行一次代码块
- on(“点击”)仅在第二次点击后触发
- 第二次单击时执行不同的代码(JavaScript)
- 此代码在第一次迭代时给出 0 作为高度和宽度,第二次给出正确的尺寸
- Javascript 在第一次完成之前执行第二行代码
- jQuery代码仅在第二次点击后有效
- 我的代码有什么问题?(第二次点击功能不起作用)
- 为什么我得到返回假值的关键代码,而不是关键代码时,按第二次
- Javascript代码第二次不工作
- javascript代码有问题.灯箱没有第二次打开
- jQuery: .toggle代码在第二次点击时不工作
- 我可以在第二次触发事件时执行一组不同的代码吗
- 在多选框中选择的值被记住的第二次弹出加载,即使我没有写代码来记住