JavaScript总结之鼠标划过弹出div单击出现对话框
为了满足他们的永无止境的要求,我可谓是任劳任怨啊,累断了双手,看瞎了双眼。这个是来写鼠标划过一个按钮,然后弹出一个小提示框解释,另外根据radio是否选中,判断点击后如何执行,然后执行之后再有一个确认或取消。其实部分想要的功能可以从中截取。
js代码:
1 <script type="text/javascript"> 2 function sAlert_jobdel(str){ 3 var msgw,msgh,bordercolor; 4 msgw=400;//提示窗口的宽度 5 msgh=150;//提示窗口的高度 6 titleheight=25 //提示窗口标题高度 7 bordercolor="#D3CFD0";//提示窗口的边框颜色 8 titlecolor="#D3CFD0";//提示窗口的标题颜色 9 10 var sWidth,sHeight; 11 sWidth=document.body.offsetWidth; 12 sHeight=screen.height; 13 14 var bgObj=document.createElement("div"); 15 bgObj.setAttribute(‘id‘,‘bgDiv‘); 16 bgObj.style.position="absolute"; 17 bgObj.style.top="0"; 18 bgObj.style.background="#777"; 19 bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75"; 20 bgObj.style.opacity="0.6"; 21 bgObj.style.left="0"; 22 bgObj.style.width=sWidth + "px"; 23 bgObj.style.height=sHeight + "px"; 24 bgObj.style.zIndex = "10000"; 25 26 27 var msgObj=document.createElement("div") 28 msgObj.setAttribute("id","msgDiv"); 29 msgObj.setAttribute("align","center"); 30 msgObj.style.background="white"; 31 msgObj.style.border="5px solid " + bordercolor; 32 msgObj.style.position = "absolute"; 33 msgObj.style.left = "50%"; 34 msgObj.style.top = "50%"; 35 msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif"; 36 msgObj.style.marginLeft = "-225px" ; 37 msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px"; 38 msgObj.style.width = msgw + "px"; 39 msgObj.style.height =msgh + "px"; 40 msgObj.style.textAlign = "center"; 41 msgObj.style.lineHeight ="25px"; 42 msgObj.style.zIndex = "10001"; 43 44 var btn1 = document.createElement("input"); 45 btn1.setAttribute("id","btnMks"); 46 btn1.setAttribute("value","确定"); 47 btn1.setAttribute("type","button"); 48 btn1.setAttribute("width","150px"); 49 btn1.setAttribute("height","20px"); 50 btn1.style.paddingTop="3px"; 51 btn1.style.paddingBottom="3px"; 52 btn1.style.paddingLeft="8px"; 53 btn1.style.paddingRight="8px"; 54 btn1.style.marginTop="40px"; 55 btn1.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);"; 56 btn1.style.opacity="0.75"; 57 btn1.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif"; 58 btn1.style.cursor="pointer"; 59 btn1.onclick=function(){ 60 document.body.removeChild(bgObj); 61 document.getElementById("msgDiv").removeChild(title); 62 document.body.removeChild(msgObj); 63 } 64 65 var title=document.createElement("h4"); 66 title.setAttribute("id","msgTitle"); 67 title.setAttribute("align","right"); 68 title.style.margin="0"; 69 title.style.padding="3px"; 70 title.style.background=bordercolor; 71 title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);"; 72 title.style.opacity="0.75"; 73 title.style.border="1px solid " + bordercolor; 74 title.style.height="18px"; 75 title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif"; 76 title.style.color="white"; 77 title.style.cursor="pointer"; 78 title.innerHTML="关闭"; 79 title.onclick=function(){ 80 document.body.removeChild(bgObj); 81 document.getElementById("msgDiv").removeChild(title); 82 document.body.removeChild(msgObj); 83 } 84 var bool=false; 85 for(i=0;i<document.getElementsByName("job_item").length;i++){ 86 if(document.getElementsByName("job_item").item(i).checked){ 87 bool=true; 88 }} 89 if(bool==false){ 90 document.body.appendChild(bgObj); 91 document.body.appendChild(msgObj); 92 document.getElementById("msgDiv").appendChild(title); 93 var txt=document.createElement("p"); 94 txt.style.margin="1em 0" 95 txt.setAttribute("id","msgTxt"); 96 txt.style.color="#000" 97 txt.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif" 98 txt.innerHTML=str; 99 document.getElementById("msgDiv").appendChild(txt); 100 document.getElementById("msgDiv").appendChild(btn1); 101 }else{ 102 if(window.confirm(‘删除是不可恢复的,你确定要删除吗?‘)){ 103 /*alert("确定");*/ 104 return true; 105 }else{ 106 /* alert("取消");*/ 107 return false; 108 } 109 110 } 111 } 112 113 </script>
这段js代码实现了弹出提示框,还有再次确认框。
1 <script type="text/javascript" src="jquery-1.11.1.min.js"></script> 2 <script type="text/javascript"> 3 $(function(){ 4 $("#popup_submit1").mouseover(function(){ 5 $(‘#overflow1‘).delay(400).show(‘fast‘); 6 }) 7 $("#popup_submit1").mouseout(function(){ 8 $(‘#overflow1‘).hide(‘fast‘); 9 }) 10 $("#popup_submit2").mouseover(function(){ 11 $(‘#overflow2‘).delay(400).show(‘fast‘); 12 }) 13 $("#popup_submit2").mouseout(function(){ 14 $(‘#overflow2‘).hide(‘fast‘); 15 }) 16 }) 17 </script>
这段代码是鼠标划过显示下拉框。
HTML代码:
1 <form> 2 <input type="radio" name="job_item" /> 3 作业1<br /> 4 <input type="radio" name="job_item" /> 5 作业2<br /> 6 <input type="radio" name="job_item" /> 7 作业3<br /> 8 <input type="radio" name="job_item" /> 9 作业4<br /> 10 <br /> 11 <br /> 12 <br /> 13 <br /> 14 <span style="width:200px;"> 15 <input style="width:100px;" id="popup_submit1" type="button" value="删除" onclick="sAlert_jobdel(‘请在作业列表中选择一个作业‘);"> 16 <div class="tip1" id="overflow1"> 17 <div class="arrow"></div> 18 <div class="wrap"> 19 <div class="content"> 20 <p>选中一个作业后删除</p> 21 </div> 22 </div> 23 </div> 24 </span> <span style="margin-left:20px; width:200px;"> 25 <input style="width:100px;" id="popup_submit2" type="reset" value="重置" > 26 <div class="tip1" id="overflow2"> 27 <div class="arrow"></div> 28 <div class="wrap"> 29 <div class="content"> 30 <p>取消radio的选中状态</p> 31 </div> 32 </div> 33 </div> 34 </span> 35 </form>
将按钮放在一个form里,可以形成一个像组一样的东西,这样input一个type为reset的重置就可以将选中的radio去掉。
CSS代码:
1 <style type="text/css"> 2 .tip1 { 3 position: absolute; 4 z-index: 999; 5 display: none; 6 margin-top: 30px; 7 } 8 .tip1 > div.arrow { 9 background: url(../assets/inline_help_arrow.png); 10 position: absolute; 11 width: 30px; 12 height: 18px; 13 background-repeat: no-repeat; 14 right: 80px; 15 top: 0; 16 } 17 .tip1 > .wrap { 18 -moz-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white; 19 -o-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white; 20 -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white; 21 box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white; 22 -moz-border-radius: 3px; 23 /* Gecko */ 24 -webkit-border-radius: 3px; 25 /* Webkit */ 26 -khtml-border-radius: 3px; 27 /* Konqueror */ 28 border-radius: 3px; 29 /* CSS3 */ 30 border: 1px solid #bbb; 31 border-bottom-color: #aaa; 32 border-right-color: #aaa; 33 background: #fff; 34 background-image: -moz-linear-gradient(#f8f8f8, #ededef); 35 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f8f8f8), color-stop(1, #ededef)); 36 background-image: -webkit-linear-gradient(#f8f8f8, #ededef); 37 background-image: -o-linear-gradient(#f8f8f8, #ededef); 38 background-image: -ms-linear-gradient(top, #f8f8f8, #ededef); 39 background-image: linear-gradient(top, #f8f8f8, #ededef); 40 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#f8f8f8‘, endColorstr=‘#ededef‘); 41 -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#f8f8f8‘, endColorstr=‘#ededef‘)"; 42 padding: 5px 5px; 43 width: 150px; 44 color: #333; 45 font-weight: normal; 46 opacity: 0.7; 47 filter: alpha(opacity=70);/* IE 透明度70%*/ 48 -moz-opacity: .7;/* Moz + FF 透明度70%*/ 49 } 50 .tip1 > .wrap > .content { 51 margin-top: 5px; 52 padding: 0 10px 0 10px; 53 background: #fff; 54 border: 1px solid #cfcfcf; 55 max-height: 400px; 56 overflow-y: auto; 57 -moz-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1); 58 -o-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1); 59 -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1); 60 box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1); 61 } 62 .tip1 > .wrap .content p { 63 color: #000; 64 } 65 .tip1 > .wrap h3 { 66 text-align: center; 67 padding-top: 10px; 68 padding-left: 5px; 69 margin: 0; 70 color: #000; 71 font-weight: 600; 72 font-size: 14px; 73 } 74 .tip1 > .wrap h3:first-child { 75 padding-top: 5px; 76 } 77 .tip1 > .wrap h4 { 78 color: #fff; 79 font-style: italic; 80 } 81 </style>
将这些部分合到一个页面里面是可以完美运行起来的。
有空来记录一下确实不错。发上来之前就发现了一出逻辑错误。我用for循环来检测每一个radio。但是也把画弹出框的语句放到循环里了,最后造成的效果是画了好几次。以后这习惯得好好保持啊。
意见建议欢迎提出。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。