RT:就一个展开层和隐藏层的一个事件,每次页面加载的时候都要点击两下才能够调用函数,页面中写的很简单<a href="javascript:void(0)" onclick="dosomething();return:false;">点击</a>,页面第一次加载的时候要点击两次,才能有作用,以后就可以了,但是我想第一次点击就起作用,求教各位大大该如何解决!!??
调试欢乐多
<!--
function showdiv(targetid, clickid)
{
var target = document.getElementById(targetid);
var click = document.getElementById(clickid); if (target.style.display == "none")
{
target.style.display = "block";
click.innerHTML = "Moreinformation<<";
var inps = document.getElementById(targetid).getElementsByTagName("input");
for (var j=0, len=inps.length; j<len;j++)
if (inps[j].type == "text")
{
inps[j].focus();
break;
}
}
else {
target.style.display = "none";
click.innerHTML = "Moreinformation>>";
}
}
-->
</script>
页面中调用
<a id="clickid" href="javascript:void(0)" onclick="dosomething();return:false;">Moreinformation>></a>
下面就是各个要操作的层了默认设置了style="display:none"
<div id="div1">//div1就是targetid
</div>
if (target.style.display == "block")
{
target.style.display = "none";
来获取,只能用obj.currentStyle.display(just for IE)来表示,不然取得都是"",上面的刚好能调换顺序后第一次判断就能够碰巧实现点击后执行动作,不然像我刚开始没变换顺序,由于取到的属性是""所以即使css里写的是none但是,还是不会执行js属性=="none",而会执行else将属性变为none再继续执行,总之总算明白了,也谢谢大家的回答!
function getStyleByAttr(a,b){
return a.currentStyle?a.currentStyle[b]:window.getComputedStyle(a,null)[b];
}
var o=document.getElementById('id');
var val=getStyleByAttr(o,'display');