我是Javascript的新手,我想通过按esc
键来关闭此模式,除了单击span。怎么写呢?
var modal = document.getElementById('myModal');
var img = document.getElementById('myImg');
var img2 = document.getElementById('myImg2');
var img3 = document.getElementById('myImg3');
var img4 = document.getElementById('myImg4');
var modalImg1 = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img2.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img3.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img4.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
var span = document.getElementsByClassName("close")[0];
span.onclick = function()
{
modal.style.display = "none";
}
我正考虑在那个范围之后添加:
window.onkeypress = function (event)
{
if (event.keyCode == 27 && modal.style.display='block')
{
modal.style.display='none';
}
}
但老实说不知道那里有什么问题
感谢您的帮助。
答案 0 :(得分:0)
尝试使用onkeyup
代替onkeypress
:
window.onkeyup = function (event) {
if (event.keyCode == '27' && modal.style.display=='block') {
modal.style.display='none';
}
}
为什么?
使用onkeypress
,您将获得不同浏览器的不同密钥代码。
在SO上检查这些线程:
Which keycode for escape key with jQuery
和:
How to detect escape key press with pure JS or jQuery?