javascript 如何使用JS在单击按钮时显示隐藏的div并在没有焦点时隐藏

iyzzxitl  于 2023-03-11  发布在  Java
关注(0)|答案(5)|浏览(157)

我正在尝试创建一个方法来显示一个div点击一个按钮,并隐藏它时,不在焦点或当用户点击以外的div。
我已经设法添加了一个按钮,可以显示隐藏的div,但我不知道如何使它隐藏时,失去了焦点。
我读过这个:Hide a DIV when it loses focus/blur
...和其他文章,但我不能遵循他们使它工作..
请看我的代码:

function openCardsList() {
  let window = document.getElementById("anchor-cards-list");
  window.style.display = "block";
}
$(document).not("#anchor-cards-list").click(function() {
  $('#anchor-cards-list').hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div class="collapse" id="anchor-cards-list">Lorem Ipsum</div>

<button id="anchor-open-cards-list-btn" onclick="openCardsList();">Collapse Maincard</button>

任何帮助都将不胜感激。先谢谢你!

wwtsj6pe

wwtsj6pe1#

您可以使用以下代码:

function openCardsList() {
    let window = document.getElementById("anchor-cards-list");
    window.style.display = "block";
  }
  function hideDiv(){
    let window = document.getElementById("anchor-cards-list");
    window.style.display = "none";
  }

并将onclick事件添加到父div

div onclick="hideDiv()" style="height: 100vh;">
  <div class="collapse" id="anchor-cards-list">Lorem Ipsum</div>
</div>
bnl4lu3b

bnl4lu3b2#

我个人会把事情简单化,把关注点分开,在按钮上添加一个事件监听器(click)来显示你的div,在div上添加一个事件监听器(blur)来隐藏它。

document.getElementById('anchor-open-cards-list-btn').addEventListener('click', showDiv);
document.getElementById('anchor-cards-list').addEventListener('blur', hideDiv);

然后showDiv和hideDiv只处理元素的可见性。

41zrol4v

41zrol4v3#

简单使用jquery

使用toggle()代替show/hide,因为它更清晰和简单。

$(document).ready(function(){
  $("#anchor-open-cards-list-btn").click(function(){
   $("#anchor-cards-list").toggle();
 });
});

function openCardsList() {
  $("#anchor-cards-list").toggle();
}


对于onblue,也可以使用以下代码

function openCardsList() {
 $("#anchor-cards-list").css('display','block');
}
function hideD(){
 $("#anchor-cards-list").css('display','none');
}

在父div中添加onclick事件

div onclick="hideD()">
 <div id="anchor-cards-list">text</div>
</div>
x4shl7ld

x4shl7ld4#

我更喜欢在函数之外制作let窗口,这样你就可以在任何需要的时候使用它。而且如果你只在onclick和onblur时为handle show/hide div制作这个窗口,你就不需要jquery。默认的javascript可以提供这些事件操作。
script.js

let card = document.getElementById('anchor-cards-list')

function openCard() {
  card.style.display = 'block'
}

function blurCard() { 
 card.style.display = 'none'
}

index.html

<div id="anchor-cards-list">Hello Text</div>
<button onclick="openCard()" onblur="blurCard()">Clik me</button>
jhdbpxl9

jhdbpxl95#

const phoneCross=文档.getElementById(“电话交叉”).addEventListener(“单击”,函数(){

console.log('clicked phone cross button');
            // cross button display none successful way
            document.getElementById('main-phone-div').style.display='none';

相关问题