Javascript 为什么按钮必须点击两次才能工作?
我是新的编程,我想写的东西有3个按钮来控制3隐藏图像的显示分别。当我单击第一个按钮时,图像立即出现,但必须单击两次才能显示第二个图像。 有人能帮忙吗 我用这种方式有三个按钮Javascript 为什么按钮必须点击两次才能工作?,javascript,html,image,Javascript,Html,Image,我是新的编程,我想写的东西有3个按钮来控制3隐藏图像的显示分别。当我单击第一个按钮时,图像立即出现,但必须单击两次才能显示第二个图像。 有人能帮忙吗 我用这种方式有三个按钮 <input type="image" img src="1.png" id="a1" href="javascript:;" onclick="change()"> <input type="image" img src="2.png" id="a12" href="javascript:;" oncli
<input type="image" img src="1.png" id="a1" href="javascript:;" onclick="change()">
<input type="image" img src="2.png" id="a12" href="javascript:;" onclick="change2 ()">
<input type="image" img src="3.png" id="a13" href="javascript:;" onclick="change3 ()">
3默认为“显示:无”的图像
下面是javascript部分
<script>
var isShow = false;
function change() {
if(!isShow) {
isShow = true;
document.getElementById('d1').style.display='';
}
else
{document.getElementById('d1').style.display='none';
}
function change2 () {
if(!isShow) {
isShow = true;
document.getElementById('d2').style.display='';
}
else {
isShow = false;
document.getElementById('d2').style.display='none';
}
}
function change3 () {
if(!isShow) {
isShow = true;
document.getElementById('d3').style.display='';
}
else {
isShow = false;
document.getElementById('d3').style.display='none';
}
}
</script>
var isShow=假;
函数更改(){
如果(!isShow){
isShow=true;
document.getElementById('d1').style.display='';
}
其他的
{document.getElementById('d1').style.display='none';
}
功能更改2(){
如果(!isShow){
isShow=true;
document.getElementById('d2')。style.display='';
}
否则{
isShow=假;
document.getElementById('d2').style.display='none';
}
}
功能更改3(){
如果(!isShow){
isShow=true;
document.getElementById('d3').style.display='';
}
否则{
isShow=假;
document.getElementById('d3').style.display='none';
}
}
任何建议都将不胜感激可变因素是罪魁祸首是谁 根据您的逻辑,当调用change()方法时,isShow的值变为“true” 因此,在其他两种方法中,执行总是在第一次单击时转到“else”部分,而isShow变为“false”。因此,您必须再次单击
既然您正在尝试学习,我就让您考虑另一种方法。为了每个对象只处理一个条件,sou可以在每个对象上附加一个,比如说,
“显示的”
,然后使用它。让我们做一个例子,与第一个按钮相关,但对于其他两个按钮,情况完全相同
document.getElementById('d1')['displayed'] = false;
function change() {
var isShow = document.getElementById('d1')['displayed'];
if(!isShow) {
document.getElementById('d1').style.display='';
document.getElementById('d1')['displayed'] = true;
}
else {
document.getElementById('d1').style.display='none';
document.getElementById('d1')['displayed'] = false;
}
}
但这是一种教学方法,正如xEterno提到的,您应该熟悉jquery。因为您是编程新手,请尝试以下方法: 我重新编写了您的函数,只需使用一个函数,iam将传递要显示/隐藏的元素的id。与其检查全局布尔值(true/false),不如检查元素是否隐藏:
function change(ids) {
var elem = document.getElementById(ids);
if(elem.style.display =='none') {
elem.style.display='';
}
else{
elem.style.display='none';
}
}
DOM:
<input type="image" img src="1.png" id="a1" href="javascript:;" onclick="change('d1')">
<input type="image" img src="2.png" id="a12" href="javascript:;" onclick="change('d2')">
<input type="image" img src="3.png" id="a13" href="javascript:;" onclick="change('d3')">
根据@xEterno的建议,您可以使用jQUery实现这一点。如何实现?有没有更好的写入方法,那么它就不会受到其他条件的影响?因为您的var isShow对所有三个函数都是全局可用的。肯定有更好的方法可以做到这一点,因为所有函数的功能都是相同的谢谢,因为我不知道如何使用jquery。我会研究的