gpt4 book ai didi

JavaScript 模糊

转载 作者:行者123 更新时间:2023-11-28 02:52:17 27 4
gpt4 key购买 nike

我正在学习 Javascript,我正在尝试创建一个简单的下拉菜单。我想要的功能的示例可以在 Google 主页的顶部菜单中看到,其中包含“更多”和“设置”下拉菜单。

我有一个使用 onclick() JS 事件处理程序设置为 display:inline 的 ul。当我单击页面上除当前可见的 ul 之外的任何其他位置时,如何使 ul 返回到 display:none?

我在 Google 上搜索过有关模糊并将焦点设置到另一个元素的信息,但我不知道如何实际执行。

我想直接使用 Javascript 来完成此操作,而不是 jQuery。

这是我使用的html:

<div class="info">  
Some Text Boom A <a onclick="menu('id1');">Link</a> | More text
<a onclick="menu('id2');">Another Link</a> | more text
<ul id="id1" class="submenu">
<li><a href="dfhdfh">A1</a></li>
<li><a href="aetjetjsd">A2 This is Long</a></li>
<li><a href="etetueb">A3</a></li>
</ul>
<ul id="id2" class="submenu">
<li><a href="dfhdfh">B1</a></li>
<li><a href="aetjetjsd">B2</a></li>
<li><a href="etetueb">B3</a></li>
</ul>
</div>

当用户单击链接的 <a> 之一时标签,<ul>它隐藏在 <a> 的正下方标签变得可见。我想要<ul>当用户单击 <ul> 以外的任何位置时,元素消失。

编辑:

这是我的 JavaScript:

function menu(id) {  
var myLayer = document.getElementById(id);
if (myLayer.style.display == "none" || myLayer.style.display == "") {
myLayer.style.display = "block";
} else {
myLayer.style.display = "none";
}
}

编辑2:

完整代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>

<style type="text/css">
a
{
color:blue;
}

.info ul.submenu
{
border: solid 1px #e0e0e0;
background-color: #fff;
position: absolute;
padding: 0;
z-index: 2;
display: none;
}

.info ul.submenu li
{
display: block;
border-top: solid 1px #e0e0e0;
margin: 0px 10px 0 10px;
}

.info ul.submenu li a
{
display: block;
padding: 7px 0px 6px 0;
color: #1177ee;
cursor:pointer;
}

</style>

<script type="text/javascript">

function menu(id) {
var myLayer = document.getElementById(id);

myLayer.onblur = function() {
myLayer.style.display = 'none';
};

if (myLayer.style.display == "none" || myLayer.style.display == "") {
myLayer.style.display = "block";
} else {
myLayer.style.display = "none";
}
}

</script>
</head>

<body>
<div class="info">
Some Text Boom A <a onclick="menu('id1');">Link</a> | More text
<a onclick="menu('id2');">Another Link</a> | more text
<ul id="id1" class="submenu">
<li><a href="dfhdfh">A1</a></li>
<li><a href="aetjetjsd">A2 This is Long</a></li>
<li><a href="etetueb">A3</a></li>
</ul>
<ul id="id2" class="submenu">
<li><a href="dfhdfh">B1</a></li>
<li><a href="aetjetjsd">B2</a></li>
<li><a href="etetueb">B3</a></li>
</ul>
</div>
</body>
</html>

最佳答案

这实际上很简单。

获得对要绑定(bind) blur 事件监听器的 DOM 元素的引用后,按如下方式分配它:

myLayer.onblur = function() {
myLayer.style.display = 'none';
};

关于JavaScript 模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com