div模拟按纽效果,利用JS控制状态效果,遇到问题,在线请解。。 用一个临时变量当有onclick事件的时候,根据临时变量找到上个div,恢复他的状态;再把当前div的id赋给此变量 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 document.getElementByid()这个不行嘛? var preobj ="EIWONF";function stateChange(){ if (typeof(preobj)=="object") preobj.className = "buttonOut"; window.event.srcElement.className = "buttonPressed"; preobj = window.event.srcElement; }加上这段代码以后就成功了,谢谢!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>测试</title><style type="text/css">#buttonOut{ margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #EBE9ED; font-family:Verdana, Arial, Helvetica, sans-serif; color: #000000; text-align: center; vertical-align: middle; cursor: auto;} .buttonOut { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #EBE9ED; font-family:Verdana, Arial, Helvetica, sans-serif; color: #000000; text-align: center; vertical-align: middle; cursor: auto;}.buttonOver { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #335EA8; font-family:Verdana, Arial, Helvetica, sans-serif; color: #FFFFFF; text-align: center; vertical-align: middle; cursor: default;}.buttonPressed { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #9DACBF; font-family:Verdana, Arial, Helvetica, sans-serif; color: #5C5C5C; text-align: center; vertical-align: middle; cursor: default;}</style><script language="javascript" type="text/javascript"><!--var curtBtnID = "EWDIDOW";var lastBtnID = "DOWPQKF";var pressBtnID = "LMURHQE";/*我修改的部分*/var curtBtnCtr = null;/*****************/function buttonOut(){ lastBtnID = window.event.srcElement.id; //alert("lastBtnID"+lastBtnID); //alert("curtBtnID"+curtBtnID); //alert("pressBtnID"+pressBtnID); if (pressBtnID != curtBtnID && curtBtnID == window.event.srcElement.id) { window.event.srcElement.className = "buttonOut"; }}function buttonOver(){ curtBtnID = window.event.srcElement.id; //var copyCurtBtnID = window.event.srcElement.id; //alert("lastBtnID"+lastBtnID); //alert("curtBtnID"+curtBtnID); //alert("pressBtnID"+pressBtnID); if (pressBtnID == lastBtnID && curtBtnID == lastBtnID) { return; } //lastBtnID.className = "buttonOut"; window.event.srcElement.className = "buttonOver";}function buttonPressed(){ pressBtnID = window.event.srcElement.id; if (pressBtnID == lastBtnID) { return; } //if (document.all.tags('div').id.indexOf("buttonGroup") == 0 ) stateChange();}function stateChange(){ // for(i=0;i<document.all.tags('div').length;i++)// {// if (document.all.tags('div')[i].id.indexOf('id') == 0)// {// document.all(document.all.tags("div")[i].id).className = "buttonOut";// }// } // window.event.srcElement.className = "buttonPressed"; /*我修改的部分*/ if(curtBtnCtr==null) { curtBtnCtr=window.event.srcElement; } curtBtnCtr.className="buttonOut"; window.event.srcElement.className = "buttonPressed"; curtBtnCtr=window.event.srcElement; /*****************/} //--></script></head><body><div id="buttonGroup"><div id="id1" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button Yes</div><div id="id2" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No</div><div id="id3" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No2</div></div><div></div></body> lz好懒哎改了你的buttonPressed这个就可以啦,利用你的pressBtnIDfunction buttonPressed(){ if(pressBtnID!="LMURHQE") //其实就加了这一句 { document.getElementById(pressBtnID).className ="buttonOut"; } pressBtnID = window.event.srcElement.id; if (pressBtnID == lastBtnID) { return; } //if (document.all.tags('div').id.indexOf("buttonGroup") == 0 ) //stateChange(); //不用你的遍历div了} 还是有问题,我的目的是只有当鼠标点中时状态才会变化,可是现在当点中鼠标以后,再将鼠标移动到这个DIV上面时,它的状态是变的,做的我都有点晕了。。请高手帮忙,,,谢谢!! 只有当onclick事件发生时,状态才会变化,其它事件状态不会变化,现在还是没有实现,尽量写出详细的代码。,现在搞得我有点发晕了,。。多谢。。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>测试</title><style type="text/css">#buttonOut{ margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #EBE9ED; font-family:Verdana, Arial, Helvetica, sans-serif; color: #000000; text-align: center; vertical-align: middle; cursor: auto;} .buttonOut { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #EBE9ED; font-family:Verdana, Arial, Helvetica, sans-serif; color: #000000; text-align: center; vertical-align: middle; cursor: auto;}.buttonOver { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #335EA8; font-family:Verdana, Arial, Helvetica, sans-serif; color: #FFFFFF; text-align: center; vertical-align: middle; cursor: default;}.buttonPressed { margin: 2px 2px 2px 2px; padding: 2px 2px 2px 2px; width: 100px; height: 20px; border: 1px #000000 solid; background-color: #9DACBF; font-family:Verdana, Arial, Helvetica, sans-serif; color: #5C5C5C; text-align: center; vertical-align: middle; cursor: default;}</style><script language="javascript" type="text/javascript"><!--var curtBtnID = "EWDIDOW";var lastBtnID = "DOWPQKF";var pressBtnID = "LMURHQE";var preObj ="id1";function buttonOut(){ lastBtnID = window.event.srcElement.id; if (pressBtnID != curtBtnID && curtBtnID == window.event.srcElement.id) { window.event.srcElement.className = "buttonOut"; } }function buttonOver(){ curtBtnID = window.event.srcElement.id; if ( curtBtnID == preObj) return; if (pressBtnID == lastBtnID && curtBtnID == lastBtnID) { return; } window.event.srcElement.className = "buttonOver";}function buttonPressed(){ pressBtnID = window.event.srcElement.id; if (pressBtnID == lastBtnID) { return; } stateChange();}function stateChange(){ /* for(i=0;i<document.all.tags('div').length;i++) { if (document.all.tags('div')[i].id.indexOf('id') == 0) { document.all(document.all.tags("div")[i].id).className = "buttonOut"; } } window.event.srcElement.className = "buttonPressed"; */ if (typeof(document.getElementById(preObj)) == "object" ) document.getElementById(preObj).className = "buttonOut"; window.event.srcElement.className = "buttonPressed"; preObj = window.event.srcElement.id;} //--></script></head><body><div id="buttonGroup"><div id="id1" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button Yes</div><div id="id2" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No</div><div id="id3" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No2</div></div><div></div> 没明白,我也要晕了用我刚才给的代码,情况是:点击后,此div变色,只有再次点击的时候才恢复。其他的div,鼠标移动时,会变色和恢复。符合吧? <script language="javascript" type="text/javascript"><!--var pressBtnCtr = null;function buttonOut(){ if(pressBtnCtr!=null && pressBtnCtr.id==window.event.srcElement.id) { window.event.srcElement.className = "buttonPressed"; } else { window.event.srcElement.className = "buttonOut"; } }function buttonOver(){ window.event.srcElement.className = "buttonOver";}function buttonPressed(){ if (pressBtnCtr!=null && pressBtnCtr.id==window.event.srcElement.id) { return; } stateChange();}function stateChange(){ if(pressBtnCtr!=null) { pressBtnCtr.className="buttonOut"; } window.event.srcElement.className = "buttonPressed"; pressBtnCtr=window.event.srcElement;}//--></script> ext 获取panel autoLoad页面控件的值 ---为什么我的JavaScript脚本出错的时候不谈出来调试对话框,让我选择调试工具,怎么解决? 关于一个滑动门的问题,请高手看看哪里有问题? 求大家帮做个下拉菜单,谢了 document.getElementById问题 高分求未解决的两个问题 帮忙看看这个呢?javascript不是很熟悉!已经很长时间了!感觉有点难 循环输出表格 blur的问题,请求帮助? 一个怪问题!iFrame内的页面见设置了自动刷新,但如果父页面一按超链,刷新就莫名其妙停止? 一个form如何实现提交给两个页面 meizz斑竹进来一下 谢谢
function stateChange()
{
if (typeof(preobj)=="object")
preobj.className = "buttonOut";
window.event.srcElement.className = "buttonPressed";
preobj = window.event.srcElement;
}
加上这段代码以后就成功了,谢谢!!
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
<style type="text/css">
#buttonOut
{
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #EBE9ED;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #000000;
text-align: center;
vertical-align: middle;
cursor: auto;
}
.buttonOut {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #EBE9ED;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #000000;
text-align: center;
vertical-align: middle;
cursor: auto;
}.buttonOver {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #335EA8;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #FFFFFF;
text-align: center;
vertical-align: middle;
cursor: default;
}.buttonPressed {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #9DACBF;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #5C5C5C;
text-align: center;
vertical-align: middle;
cursor: default;
}
</style><script language="javascript" type="text/javascript">
<!--
var curtBtnID = "EWDIDOW";
var lastBtnID = "DOWPQKF";
var pressBtnID = "LMURHQE";
/*我修改的部分*/
var curtBtnCtr = null;
/*****************/function buttonOut()
{
lastBtnID = window.event.srcElement.id;
//alert("lastBtnID"+lastBtnID);
//alert("curtBtnID"+curtBtnID);
//alert("pressBtnID"+pressBtnID);
if (pressBtnID != curtBtnID && curtBtnID == window.event.srcElement.id)
{
window.event.srcElement.className = "buttonOut";
}
}function buttonOver()
{
curtBtnID = window.event.srcElement.id;
//var copyCurtBtnID = window.event.srcElement.id;
//alert("lastBtnID"+lastBtnID);
//alert("curtBtnID"+curtBtnID);
//alert("pressBtnID"+pressBtnID);
if (pressBtnID == lastBtnID && curtBtnID == lastBtnID)
{
return;
}
//lastBtnID.className = "buttonOut";
window.event.srcElement.className = "buttonOver";
}function buttonPressed()
{
pressBtnID = window.event.srcElement.id;
if (pressBtnID == lastBtnID)
{
return;
}
//if (document.all.tags('div').id.indexOf("buttonGroup") == 0 )
stateChange();
}
function stateChange()
{ // for(i=0;i<document.all.tags('div').length;i++)
// {
// if (document.all.tags('div')[i].id.indexOf('id') == 0)
// {
// document.all(document.all.tags("div")[i].id).className = "buttonOut";
// }
// }
// window.event.srcElement.className = "buttonPressed"; /*我修改的部分*/
if(curtBtnCtr==null)
{
curtBtnCtr=window.event.srcElement;
}
curtBtnCtr.className="buttonOut"; window.event.srcElement.className = "buttonPressed";
curtBtnCtr=window.event.srcElement;
/*****************/
} //-->
</script>
</head><body>
<div id="buttonGroup">
<div id="id1" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button Yes</div>
<div id="id2" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No</div>
<div id="id3" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No2</div>
</div>
<div></div>
</body>
改了你的buttonPressed这个就可以啦,利用你的pressBtnID
function buttonPressed()
{
if(pressBtnID!="LMURHQE") //其实就加了这一句
{
document.getElementById(pressBtnID).className ="buttonOut";
}
pressBtnID = window.event.srcElement.id;
if (pressBtnID == lastBtnID)
{
return;
} //if (document.all.tags('div').id.indexOf("buttonGroup") == 0 )
//stateChange(); //不用你的遍历div了
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
<style type="text/css">
#buttonOut
{
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #EBE9ED;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #000000;
text-align: center;
vertical-align: middle;
cursor: auto;
}
.buttonOut {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #EBE9ED;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #000000;
text-align: center;
vertical-align: middle;
cursor: auto;
}.buttonOver {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #335EA8;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #FFFFFF;
text-align: center;
vertical-align: middle;
cursor: default;
}.buttonPressed {
margin: 2px 2px 2px 2px;
padding: 2px 2px 2px 2px;
width: 100px;
height: 20px;
border: 1px #000000 solid;
background-color: #9DACBF;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #5C5C5C;
text-align: center;
vertical-align: middle;
cursor: default;
}
</style><script language="javascript" type="text/javascript">
<!--
var curtBtnID = "EWDIDOW";
var lastBtnID = "DOWPQKF";
var pressBtnID = "LMURHQE";
var preObj ="id1";
function buttonOut()
{
lastBtnID = window.event.srcElement.id;
if (pressBtnID != curtBtnID && curtBtnID == window.event.srcElement.id)
{
window.event.srcElement.className = "buttonOut";
}
}function buttonOver()
{
curtBtnID = window.event.srcElement.id;
if ( curtBtnID == preObj)
return;
if (pressBtnID == lastBtnID && curtBtnID == lastBtnID)
{
return;
}
window.event.srcElement.className = "buttonOver";
}function buttonPressed()
{
pressBtnID = window.event.srcElement.id;
if (pressBtnID == lastBtnID)
{
return;
}
stateChange();
}function stateChange()
{
/*
for(i=0;i<document.all.tags('div').length;i++)
{
if (document.all.tags('div')[i].id.indexOf('id') == 0)
{
document.all(document.all.tags("div")[i].id).className = "buttonOut";
}
}
window.event.srcElement.className = "buttonPressed";
*/
if (typeof(document.getElementById(preObj)) == "object" )
document.getElementById(preObj).className = "buttonOut";
window.event.srcElement.className = "buttonPressed";
preObj = window.event.srcElement.id;
}
//-->
</script>
</head><body>
<div id="buttonGroup">
<div id="id1" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button Yes</div>
<div id="id2" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No</div>
<div id="id3" class="buttonOut" onmouseout="buttonOut();" onmouseover="buttonOver();" onclick="buttonPressed();">Button No2</div>
</div>
<div></div>
用我刚才给的代码,情况是:
点击后,此div变色,只有再次点击的时候才恢复。
其他的div,鼠标移动时,会变色和恢复。
符合吧?
<!--
var pressBtnCtr = null;function buttonOut()
{
if(pressBtnCtr!=null && pressBtnCtr.id==window.event.srcElement.id)
{
window.event.srcElement.className = "buttonPressed";
}
else
{
window.event.srcElement.className = "buttonOut";
}
}function buttonOver()
{
window.event.srcElement.className = "buttonOver";
}function buttonPressed()
{
if (pressBtnCtr!=null && pressBtnCtr.id==window.event.srcElement.id)
{
return;
}
stateChange();
}function stateChange()
{
if(pressBtnCtr!=null)
{
pressBtnCtr.className="buttonOut";
}
window.event.srcElement.className = "buttonPressed";
pressBtnCtr=window.event.srcElement;
}
//-->
</script>