我如何 hide/show html 表单字段(如果用户说是,则显示一个输出,如果他们说不是,则显示不同的输出)?
How do I hide/show html form fields (showing one output if the user says yes, and a different one if they say no)?
我已经开始开发一个 Web 应用程序,在该应用程序中,我会根据用户的指示显示某些输出。如果他们单击 "no" 按钮,我希望用户看到一个 DIV,但如果他们 select 是,则应显示另一个 DIV。我编写了以下代码:
<style>
#Question1 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
</style>
<script>
<button id="no" onclick="myFunction()">No</button>
window.onload = function myFunction() {
document.getElementById("Question1").style.visibility = "hidden";
document.getElementById("no").addEventListener("click", function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
}
测试此代码后,我尝试对 "yes" 执行相同的操作。但是,我发现当我这样做时,"no" 停止工作。
<style>
#Question1 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
</style>
<style>
#Question2 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: blue;
margin-top: 15px;
}
</style>
<button id="yes" onclick="myFunction2()">Yes</button>
<button id="no" onclick="myFunction()">No</button>
<script>
window.onload = function myFunction() {
document.getElementById("Question1").style.visibility = "hidden";
document.getElementById("no").addEventListener("click", function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
}
window.onload = function myFunction2() {
document.getElementById("Question2").style.visibility = "hidden";
document.getElementById("yes").addEventListener("click", function myFunction2() {
var currentstate = document.getElementById("Question2").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question2").style.visibility = newstate;
});
}
如何为一个表单上的多个按钮编写 hide/show 功能?
谢谢!
您正在用第二个函数覆盖第一个 window.onload 函数,不需要在此处定义这些函数。你可以简单地做:
<button id="yes" style="visibility: hidden" onclick="myFunction2()">Yes</button>
<button id="no" style="visibility: hidden" onclick="myFunction()">No</button>
<script>
function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
function myFunction2() {
var currentstate = document.getElementById("Question2").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question2").style.visibility = newstate;
});
function init() {
document.getElementById("no").addEventListener("click", myFunction)
document.getElementById("yes").addEventListener("click", myFunction2)
}
window.onLoad = init
</script>
如果我没看错的话,您需要根据点击的按钮来切换问题。这是我基于您的代码的解决方案:
https://jsfiddle.net/75n60vtk/
<div id="Question1">Question1</div>
<div id="Question2">Question2</div>
<br>
<button id="yes">Yes</button>
<button id="no">No</button>
#Question1 {
display: none;
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
#Question2 {
display: none;
width: 80%;
padding: 15px 0;
text-align: center;
background-color: blue;
margin-top: 15px;
}
document.getElementById("no").addEventListener("click", function() {
document.getElementById("Question1").style.display = "none";
document.getElementById("Question2").style.display = "block";
})
document.getElementById("yes").addEventListener("click", function() {
document.getElementById("Question1").style.display = "block";
document.getElementById("Question2").style.display = "none";
})
我已经开始开发一个 Web 应用程序,在该应用程序中,我会根据用户的指示显示某些输出。如果他们单击 "no" 按钮,我希望用户看到一个 DIV,但如果他们 select 是,则应显示另一个 DIV。我编写了以下代码:
<style>
#Question1 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
</style>
<script>
<button id="no" onclick="myFunction()">No</button>
window.onload = function myFunction() {
document.getElementById("Question1").style.visibility = "hidden";
document.getElementById("no").addEventListener("click", function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
}
测试此代码后,我尝试对 "yes" 执行相同的操作。但是,我发现当我这样做时,"no" 停止工作。
<style>
#Question1 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
</style>
<style>
#Question2 {
width: 80%;
padding: 15px 0;
text-align: center;
background-color: blue;
margin-top: 15px;
}
</style>
<button id="yes" onclick="myFunction2()">Yes</button>
<button id="no" onclick="myFunction()">No</button>
<script>
window.onload = function myFunction() {
document.getElementById("Question1").style.visibility = "hidden";
document.getElementById("no").addEventListener("click", function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
}
window.onload = function myFunction2() {
document.getElementById("Question2").style.visibility = "hidden";
document.getElementById("yes").addEventListener("click", function myFunction2() {
var currentstate = document.getElementById("Question2").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question2").style.visibility = newstate;
});
}
如何为一个表单上的多个按钮编写 hide/show 功能?
谢谢!
您正在用第二个函数覆盖第一个 window.onload 函数,不需要在此处定义这些函数。你可以简单地做:
<button id="yes" style="visibility: hidden" onclick="myFunction2()">Yes</button>
<button id="no" style="visibility: hidden" onclick="myFunction()">No</button>
<script>
function myFunction() {
var currentstate = document.getElementById("Question1").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question1").style.visibility = newstate;
});
function myFunction2() {
var currentstate = document.getElementById("Question2").style.visibility;
var newstate = currentstate == "visible" ? "hidden" : "visible"
document.getElementById("Question2").style.visibility = newstate;
});
function init() {
document.getElementById("no").addEventListener("click", myFunction)
document.getElementById("yes").addEventListener("click", myFunction2)
}
window.onLoad = init
</script>
如果我没看错的话,您需要根据点击的按钮来切换问题。这是我基于您的代码的解决方案:
https://jsfiddle.net/75n60vtk/
<div id="Question1">Question1</div>
<div id="Question2">Question2</div>
<br>
<button id="yes">Yes</button>
<button id="no">No</button>
#Question1 {
display: none;
width: 80%;
padding: 15px 0;
text-align: center;
background-color: red;
margin-top: 15px;
}
#Question2 {
display: none;
width: 80%;
padding: 15px 0;
text-align: center;
background-color: blue;
margin-top: 15px;
}
document.getElementById("no").addEventListener("click", function() {
document.getElementById("Question1").style.display = "none";
document.getElementById("Question2").style.display = "block";
})
document.getElementById("yes").addEventListener("click", function() {
document.getElementById("Question1").style.display = "block";
document.getElementById("Question2").style.display = "none";
})