2014-09-22 53 views
0

我用一个简单的切换是这样的:如何触发切换上点击,而不是两个

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if(e.style.display == 'block') 
     e.style.display = 'none'; 
    else 
     e.style.display = 'block'; 
} 

,我的HTML是这样的:

<div id="income"> 
<h5 onclick="toggle_visibility('incometoggle');">INCOME</h5> 
<div id="incometoggle"> 
    <h6>Income Total</h6> 
</div> </div> 

此刻,我需要在标题上单击两次以使div关闭。只需点击一下,我怎样才能完成它?

http://jsfiddle.net/4w3ynj40/

回答

0

首先检查条件显示无

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if (e.style.display == 'none') e.style.display = 'block'; 
    else e.style.display = 'none'; 
} 

的jquery

$("h5").click(function() { 
    $("#incometoggle").toggle(); 
    }); 

DEMO

+0

至少你可以提到你有什么改变(“无”到“块”,反之亦然)。并且提及OP的代码不起作用也不失为一个好主意。 – Regent 2014-09-22 09:53:39

+0

事实上,原始代码的问题实际上是在开始时e.style.display是空的(在浏览器中有'div'的标准'display:block',是的,但是'e.style'有效与特定元素的样式,在开始时是空的)。 – Regent 2014-09-22 10:11:17

+0

是的,你是对的,但我不知道如何用英语告诉 – 2014-09-22 10:12:32

0
var hFive = document.getElementsByTagName('h5')[0]; 
hFive.addEventListener('click', function() { 
    var e = document.getElementById('incometoggle'); 
    if (e.style.display == 'block') { 
     e.style.display = 'none'; 
    } else { 
     e.style.display = 'block'; 
    } 
}, false); 

修改内联javascript的一部分,我使用addEventListener

DEMO