javascript - 在纯 JavaScript 中的 2 个元素之间切换
问题描述
我正在用纯 JavaScript 编写切换。
有 2 个输入字段,1 个是隐藏的,另一个是可见的。当我们单击第一个 1 时,应出现第二个输入,并且当两个输入字段都可见并且单击其中一个输入字段时,该输入字段应显示:块,而另一个输入字段应显示:无。此外,最近点击的输入元素应保持在顶部,而另一个在其下方。(es6也不错)
如果有人知道请检查?
代码
<form action="#" class="navbar-top" role="search" autocomplete="off"><input name="p" data-hit="Type" type="text" autocomplete="new-password" value="" data-open="false" class="input-bg neww" placeholder="Type "></form>
<form action="#" class="navbar-top" role="search" autocomplete="off"><input name="p" data-hit="Type" type="text" autocomplete="new-password" value="" data-open="false" class="input-bg neww1" placeholder="Type "></form>
body{
background:#873e66;
}
.input-bg{
background:white;
border:none;
color:black;
height:50px;
text-indent:15px;
width:500px;
border-radius:26px;
outline:none;
}
.neww1{
margin-top:5px;
}
::-webkit-input-placeholder {
color: black;
}
::-moz-placeholder {
color: black;
}
:-ms-input-placeholder {
color: black;
}
.neww1{
display:none;
}
function toggleClass(element, className){
if (!element || !className){
return;
}
var classString = element.className, nameIndex = classString.indexOf(className);
if (nameIndex == -1) {
classString += ' ' + className;
}
else {
classString = classString.substr(0, nameIndex) + classString.substr(nameIndex+className.length);
}
element.className = classString;
}
谢谢!
解决方案
你可以像这样继续:
const inputs = [].slice.call(document.getElementsByClassName("input-bg"));
inputs.forEach((input) => {
console.log()
input.addEventListener("click", (event) => {
const somehidden = inputs.filter((_input) => {
return _input.getAttribute("class").match(/neww1/i);
})
if (somehidden.length > 0) {
somehidden[0].classList.remove("neww1");
} else {
inputs.forEach((i) => {
if (i !== event.target)
i.classList.add("neww1");
});
}
});
});
body {
background: #873e66;
}
.grid {
display: grid;
grid-template-areas: "up" "down";
}
form:focus-within {
grid-area: up;
}
.input-bg {
background: white;
border: none;
color: black;
height: 50px;
text-indent: 15px;
width: 500px;
border-radius: 26px;
outline: none;
}
.neww1 {
margin-top: 5px;
}
::-webkit-input-placeholder {
color: black;
}
::-moz-placeholder {
color: black;
}
:-ms-input-placeholder {
color: black;
}
.neww1 {
display: none;
}
<div class="grid">
<form action="#" class="navbar-top" role="search" autocomplete="off"><input name="p" data-hit="Type" type="text" autocomplete="new-password" value="" data-open="false" class="input-bg neww" placeholder="Type "></form>
<form action="#" class="navbar-top" role="search" autocomplete="off"><input name="p" data-hit="Type" type="text" autocomplete="new-password" value="" data-open="false" class="input-bg neww1" placeholder="Type2 "></form>
</div>
推荐阅读
- .htaccess - 在 .htaccess 中结合 -Indexes 和 +MultiViews
- c# - Unity C# 加密错误
- kotlin - 如何在 for-each 中继续逻辑?
- r - shape file > data frame > using ggplot and joining on GEO ID with other data sets
- complexity-theory - Complexity: Is it more efficient to store two objects as variables or as array [2]?
- php - 嘲讽。检查第 100 次调用的参数
- python - Python:“re”模块包含在“Tkinter”模块中?
- php - MySQLi and PDO in mariaDB with PHP7
- vhdl - VHDL 循环 - 仅完成最后一个增量
- python - Python Web Scraping (edX)