如何仅在不使用鼠标单击时隐藏 html 元素
How to hide a html element on mouse click only when not using it
我正在创建一个在线文件存储,用户可以在其中创建新文件和文件夹。所以我添加了两个按钮来创建文件和文件夹。单击其中一个按钮时,会出现一个输入字段,用于键入文件或文件夹的名称。通常输入字段是隐藏的。当用户单击按钮时,输入字段将被取消隐藏。如果用户单击页面中的其他位置,我还需要再次隐藏它。这是我到目前为止构建的代码。
<head>
<style>
#divmain{
display: flex;
flex-direction: row;
}
#div1{
background: antiquewhite;
width: 30%;
height: 800px;
float: left;
}
#div2{
background: black;
width: 70%;
height: 800px;
float: right;
}
#input1{
display:none;
float:right;
width:295px;
height:44px;
}
</style>
</head>
<body onmousedown="buttonclick1()">
<h1>cloud file directory</h1><br>
<div id="divmain">
<script>
function buttonclick1(){
document.getElementById("input1").style.display="none"
}
</script>
<div id="div1">
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>Folder</a></button>
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>File</a></button>
<input id="input1" type="text"><br><br>
<hr style="border-top: 2px solid;">
</div>
<div id="div2">
</div>
</div>
</body>
在 div1 中添加了两个按钮。我使用 javascript 函数在检测到鼠标单击时隐藏输入字段。代码目前有效。
但问题是,即使在输入字段中单击鼠标,它也会隐藏输入字段。我需要将其隐藏以仅在输入字段外单击鼠标。我尝试使用 mouseover
。但不知道如何将它应用到这里。有什么办法吗?
你可以监听 onblur https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onblur 当元素失去焦点时触发此事件
首先,我们需要一个 event
对象,其中包含有关点击事件的详细信息。然后我们用它来确定我们是否应该 hide/show 输入字段。
我们需要根据点击的元素过滤掉事件。这里我们可以使用输入框的id
来区别于其他的点击。 target
对象包含引发事件的元素的详细信息。
使用它可以很容易地识别源元素。
<head>
<style>
#divmain{
display: flex;
flex-direction: row;
}
#div1{
background: antiquewhite;
width: 30%;
height: 800px;
float: left;
}
#div2{
background: black;
width: 70%;
height: 800px;
float: right;
}
#input1{
display:none;
float:right;
width:295px;
height:44px;
}
</style>
</head>
<body onmousedown="buttonclick1(event)">
<h1>cloud file directory</h1><br>
<div id="divmain">
<script>
function buttonclick1(e){
if(e.target.id !== 'input1')
document.getElementById("input1").style.display="none"
}
</script>
<div id="div1">
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>Folder</a></button>
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>File</a></button>
<input id="input1" type="text"><br><br>
<hr style="border-top: 2px solid;">
</div>
<div id="div2">
</div>
</div>
</body>
我正在创建一个在线文件存储,用户可以在其中创建新文件和文件夹。所以我添加了两个按钮来创建文件和文件夹。单击其中一个按钮时,会出现一个输入字段,用于键入文件或文件夹的名称。通常输入字段是隐藏的。当用户单击按钮时,输入字段将被取消隐藏。如果用户单击页面中的其他位置,我还需要再次隐藏它。这是我到目前为止构建的代码。
<head>
<style>
#divmain{
display: flex;
flex-direction: row;
}
#div1{
background: antiquewhite;
width: 30%;
height: 800px;
float: left;
}
#div2{
background: black;
width: 70%;
height: 800px;
float: right;
}
#input1{
display:none;
float:right;
width:295px;
height:44px;
}
</style>
</head>
<body onmousedown="buttonclick1()">
<h1>cloud file directory</h1><br>
<div id="divmain">
<script>
function buttonclick1(){
document.getElementById("input1").style.display="none"
}
</script>
<div id="div1">
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>Folder</a></button>
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>File</a></button>
<input id="input1" type="text"><br><br>
<hr style="border-top: 2px solid;">
</div>
<div id="div2">
</div>
</div>
</body>
在 div1 中添加了两个按钮。我使用 javascript 函数在检测到鼠标单击时隐藏输入字段。代码目前有效。
但问题是,即使在输入字段中单击鼠标,它也会隐藏输入字段。我需要将其隐藏以仅在输入字段外单击鼠标。我尝试使用 mouseover
。但不知道如何将它应用到这里。有什么办法吗?
你可以监听 onblur https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onblur 当元素失去焦点时触发此事件
首先,我们需要一个 event
对象,其中包含有关点击事件的详细信息。然后我们用它来确定我们是否应该 hide/show 输入字段。
我们需要根据点击的元素过滤掉事件。这里我们可以使用输入框的id
来区别于其他的点击。 target
对象包含引发事件的元素的详细信息。
使用它可以很容易地识别源元素。
<head>
<style>
#divmain{
display: flex;
flex-direction: row;
}
#div1{
background: antiquewhite;
width: 30%;
height: 800px;
float: left;
}
#div2{
background: black;
width: 70%;
height: 800px;
float: right;
}
#input1{
display:none;
float:right;
width:295px;
height:44px;
}
</style>
</head>
<body onmousedown="buttonclick1(event)">
<h1>cloud file directory</h1><br>
<div id="divmain">
<script>
function buttonclick1(e){
if(e.target.id !== 'input1')
document.getElementById("input1").style.display="none"
}
</script>
<div id="div1">
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>Folder</a></button>
<button style="height:44px;width:50px;float:left;" onclick="document.getElementById('input1').style.display='block'"><a>File</a></button>
<input id="input1" type="text"><br><br>
<hr style="border-top: 2px solid;">
</div>
<div id="div2">
</div>
</div>
</body>