首页 > 语言 > JavaScript > 正文

Js实现无刷新删除内容

2024-05-06 16:19:00
字体:
来源:转载
供稿:网友

本文给大家分享的是一段仿腾讯微博的无刷新删除特效的代码,非常的实用,有需要的小伙伴可以参考下。

Js实现无刷新删除内容

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5. <title>仿腾讯微博效果</title> 
  6. <style type="text/css"
  7. body,div,h2,h3,ul,li,p{margin:0;padding:0;} 
  8. a{text-decoration:none;} 
  9. a:hover{text-decoration:underline;} 
  10. ul{list-style-type:none;} 
  11. body{color:#333;background:#3c3a3b;font:12px/1.5 /5b8b/4f53;} 
  12. #msgBox{width:500px;background:#fff;border-radius:5px;margin:10px auto;padding-top:10px;} 
  13. #msgBox form h2{font-weight:400;font:400 18px/1.5 /5fae/8f6f/96c5/9ed1;} 
  14. #msgBox form{background:url() repeat-x 0 bottom;padding:0 20px 15px;} 
  15. #userName,#conBox{color:#777;border:1px solid #d0d0d0;border-radius:6px;background:#fff url(img/inputBG.png) repeat-x;padding:3px 5px;font:14px/1.5 arial;} 
  16. #userName.active,#conBox.active{border:1px solid #7abb2c;} 
  17. #userName{height:20px;} 
  18. #conBox{width:448px;resize:none;height:65px;overflow:auto;} 
  19. #msgBox form div{position:relative;color:#999;margin-top:10px;} 
  20. #msgBox img{border-radius:3px;} 
  21. #face{position:absolute;top:0;left:172px;} 
  22. #face img{width:30px;height:30px;cursor:pointer;margin-right:6px;opacity:0.5;filter:alpha(opacity=50);} 
  23. #face img.hover,#face img.current{width:28px;height:28px;border:1px solid #f60;opacity:1;filter:alpha(opacity=100);} 
  24. #sendBtn{border:0;width:112px;height:30px;cursor:pointer;margin-left:10px;background:url(img/btn.png) no-repeat;} 
  25. #sendBtn.hover{background-position:0 -30px;} 
  26. #msgBox form .maxNum{font:26px/30px Georgia, Tahoma, Arial;padding:0 5px;} 
  27. #msgBox .list{padding:10px;} 
  28. #msgBox .list h3{position:relative;height:33px;font-size:14px;font-weight:400;background:#e3eaec;border:1px solid #dee4e7;} 
  29. #msgBox .list h3 span{position:absolute;left:6px;top:6px;background:#fff;line-height:28px;display:inline-block;padding:0 15px;} 
  30. #msgBox .list ul{overflow:hidden;zoom:1;} 
  31. #msgBox .list ul li{float:left;clear:both;width:100%;border-bottom:1px dashed #d8d8d8;padding:10px 0;background:#fff;overflow:hidden;} 
  32. #msgBox .list ul li.hover{background:#f5f5f5;} 
  33. #msgBox .list .userPic{float:left;width:50px;height:50px;display:inline;margin-left:10px;border:1px solid #ccc;border-radius:3px;} 
  34. #msgBox .list .content{float:left;width:400px;font-size:14px;margin-left:10px;font-family:arial;word-wrap:break-word;} 
  35. #msgBox .list .userName{display:inline;padding-right:5px;} 
  36. #msgBox .list .userName a{color:#2b4a78;} 
  37. #msgBox .list .msgInfo{display:inline;word-wrap:break-word;} 
  38. #msgBox .list .times{color:#889db6;font:12px/18px arial;margin-top:5px;overflow:hidden;zoom:1;} 
  39. #msgBox .list .times span{float:left;} 
  40. #msgBox .list .times a{float:right;color:#889db6;display:none;} 
  41. .tr{overflow:hidden;zoom:1;} 
  42. .tr p{float:right;line-height:30px;} 
  43. .tr *{float:left;} 
  44. </style> 
  45. <script type="text/javascript"
  46. var get = { 
  47. byId: function(id) { 
  48. return typeof id === "string" ? document.getElementById(id) : id 
  49. }, 
  50. byClass: function(sClass, oParent) { 
  51. var aClass = []; 
  52. var reClass = new RegExp("(^| )" + sClass + "( |$)"); 
  53. var aElem = this.byTagName("*", oParent); 
  54. for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]); 
  55. return aClass 
  56. }, 
  57. byTagName: function(elem, obj) { 
  58. return (obj || document).getElementsByTagName(elem) 
  59. }; 
  60. /*-------------------------- + 
  61. 事件绑定, 删除 
  62. +-------------------------- */ 
  63. var EventUtil = { 
  64. addHandler: function (oElement, sEvent, fnHandler) { 
  65. oElement.addEventListener ? oElement.addEventListener(sEvent, fnHandler, false) : (oElement["_" + sEvent + fnHandler] = fnHandler, oElement[sEvent + fnHandler] 
  66.  
  67.  
  68. function () {oElement["_" + sEvent + fnHandler]()}, oElement.attachEvent("on" + sEvent, oElement[sEvent + fnHandler])) 
  69. }, 
  70. removeHandler: function (oElement, sEvent, fnHandler) { 
  71. oElement.removeEventListener ? oElement.removeEventListener(sEvent, fnHandler, false) : oElement.detachEvent("on" + sEvent, oElement[sEvent + fnHandler]) 
  72. }, 
  73. addLoadHandler: function (fnHandler) { 
  74. this.addHandler(window, "load", fnHandler) 
  75. }; 
  76. /*-------------------------- + 
  77. 设置css样式 
  78. 读取css样式 
  79. +-------------------------- */ 
  80. function css(obj, attr, value) 
  81. switch (arguments.length) 
  82. case 2: 
  83. if(typeof arguments[1] == "object"
  84. {  
  85. for (var i in attr) i == "opacity" ? (obj.style["filter"] = "alpha(opacity=" + attr[i] + ")", obj.style[i] = attr[i] / 100) : obj.style[i] = attr[i]; 
  86. else 
  87. {  
  88. return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, null)[attr] 
  89. break
  90. case 3: 
  91. attr == "opacity" ? (obj.style["filter"] = "alpha(opacity=" + value + ")", obj.style[attr] = value / 100) : obj.style[attr] = value; 
  92. break
  93. }; 
  94.  
  95.  
  96. EventUtil.addLoadHandler(function () 
  97. var oMsgBox = get.byId("msgBox"); 
  98. var oUserName = get.byId("userName"); 
  99. var oConBox = get.byId("conBox"); 
  100. var oSendBtn = get.byId("sendBtn"); 
  101. var oMaxNum = get.byClass("maxNum")[0]; 
  102. var oCountTxt = get.byClass("countTxt")[0]; 
  103. var oList = get.byClass("list")[0]; 
  104. var oUl = get.byTagName("ul", oList)[0]; 
  105. var aLi = get.byTagName("li", oList); 
  106. var aFtxt = get.byClass("f-text", oMsgBox); 
  107. var aImg = get.byTagName("img", get.byId("face")); 
  108. var bSend = false
  109. var timer = null
  110. var oTmp = ""
  111. var i = 0; 
  112. var maxNum = 140; 
  113.  
  114. //禁止表单提交 
  115. EventUtil.addHandler(get.byTagName("form", oMsgBox)[0], "submit"function () {return false}); 
  116.  
  117. //为广播按钮绑定发送事件 
  118. EventUtil.addHandler(oSendBtn, "click", fnSend); 
  119.  
  120. //为Ctrl+Enter快捷键绑定发送事件 
  121. EventUtil.addHandler(document, "keyup"function(event) 
  122. var event = event || window.event; 
  123. event.ctrlKey && event.keyCode == 13 && fnSend() 
  124. }); 
  125.  
  126. //发送广播函数 
  127. function fnSend () 
  128. var reg = /^/s*$/g; 
  129. if(reg.test(oUserName.value)) 
  130. alert("/u8bf7/u586b/u5199/u60a8/u7684/u59d3/u540d"); 
  131. oUserName.focus() 
  132. else if(!/^[u4e00-/u9fa5/w]{2,8}$/g.test(oUserName.value)) 
  133. alert("/u59d3/u540d/u75312-8/u4f4d/u5b57/u6bcd/u3001/u6570/u5b57/u3001/u4e0b/u5212/u7ebf/u3001/u6c49/u5b57/u7ec4/u6210/uff01"); 
  134. oUserName.focus() 
  135. else if(reg.test(oConBox.value)) 
  136. alert("/u968f/u4fbf/u8bf4/u70b9/u4ec0/u4e48/u5427/uff01"); 
  137. oConBox.focus() 
  138. else if(!bSend) 
  139. alert("/u4f60/u8f93/u5165/u7684/u5185/u5bb9/u5df2/u8d85/u51fa/u9650/u5236/uff0c/u8bf7/u68c0/u67e5/uff01"); 
  140. oConBox.focus() 
  141. else 
  142. var oLi = document.createElement("li"); 
  143. var oDate = new Date(); 
  144. oLi.innerHTML = "<div class=/"userPic/"><img src=/"" + get.byClass("current", get.byId("face"))[0].src + "/"></div>/ 
  145. <div class=/"content/">/ 
  146. <div class=/"userName/"><a href=/"javascript:;/">" + oUserName.value + "</a>:</div>/ 
  147. <div class=/"msgInfo/">" + oConBox.value.replace(/<[^>]*>|/ig, "") + "</div>/ 
  148. <div class=/"times/"><span>" + format(oDate.getMonth() + 1) + "/u6708" + format(oDate.getDate()) + 
  149.  
  150.  
  151. "/u65e5 " + format(oDate.getHours()) + ":" + format(oDate.getMinutes()) + "</span><a class=/"del/" href=/"javascript:;/">/u5220/u9664</a></div>/ 
  152. </div>"; 
  153. //插入元素 
  154. aLi.length ? oUl.insertBefore(oLi, aLi[0]) : oUl.appendChild(oLi); 
  155.  
  156. //重置表单 
  157. get.byTagName("form", oMsgBox)[0].reset(); 
  158. for (i = 0; i < aImg.length; i++) aImg[i].className = ""
  159. aImg[0].className = "current"
  160.  
  161. //将元素高度保存 
  162. var iHeight = oLi.clientHeight - parseFloat(css(oLi, "paddingTop")) - parseFloat(css(oLi, "paddingBottom")); 
  163. var alpah = count = 0; 
  164. css(oLi, {"opacity" : "0""height" : "0"}); 
  165.  
  166. timer = setInterval(function () 
  167. css(oLi, {"display" : "block""opacity" : "0""height" : (count += 8) + "px"}); 
  168. if (count > iHeight) 
  169. clearInterval(timer); 
  170. css(oLi, "height", iHeight + "px"); 
  171. timer = setInterval(function () 
  172. css(oLi, "opacity", (alpah += 10)); 
  173. alpah > 100 && (clearInterval(timer), css(oLi, "opacity", 100)) 
  174. },30) 
  175. },30); 
  176. //调用鼠标划过/离开样式 
  177. liHover(); 
  178. //调用删除函数 
  179. delLi() 
  180. }; 
  181.  
  182. //事件绑定, 判断字符输入 
  183. EventUtil.addHandler(oConBox, "keyup", confine); 
  184.  
  185. EventUtil.addHandler(oConBox, "focus", confine); 
  186. EventUtil.addHandler(oConBox, "change", confine); 
  187.  
  188. //输入字符限制 
  189. function confine () 
  190. var iLen = 0;  
  191. for (i = 0; i < oConBox.value.length; i++) iLen += oConBox.value.charAt(i).charCodeAt() > 255 ? 1 : 0.5; 
  192. oMaxNum.innerHTML = Math.abs(maxNum - Math.floor(iLen)); 
  193.  
  194. maxNum - Math.floor(iLen) >= 0 ? (css(oMaxNum, "color"""), oCountTxt.innerHTML = "/u8fd8/u80fd/u8f93/u5165", bSend = true) : (css(oMaxNum, "color""#f60"), 
  195.  
  196.  
  197. oCountTxt.innerHTML = "/u5df2/u8d85/u51fa", bSend = false
  198. //加载即调用 
  199. confine(); 
  200.  
  201. //广播按钮鼠标划过样式 
  202. EventUtil.addHandler(oSendBtn, "mouseover"function () {this.className = "hover"}); 
  203.  
  204.  
  205. //广播按钮鼠标离开样式 
  206. EventUtil.addHandler(oSendBtn, "mouseout"function () {this.className = ""}); 
  207.  
  208. //li鼠标划过/离开处理函数 
  209. function liHover() 
  210. for (i = 0; i < aLi.length; i++) 
  211. //li鼠标划过样式 
  212. EventUtil.addHandler(aLi[i], "mouseover"function (event) 
  213. this.className = "hover"
  214. oTmp = get.byClass("times"this)[0]; 
  215. var aA = get.byTagName("a", oTmp); 
  216. if (!aA.length) 
  217. var oA = document.createElement("a"); 
  218.  
  219. oA.innerHTML = "删除"
  220. oA.className = "del"
  221. oA.href = "javascript:;"
  222. oTmp.appendChild(oA) 
  223. else 
  224. aA[0].style.display = "block"
  225. }); 
  226.  
  227.  
  228. //li鼠标离开样式 
  229. EventUtil.addHandler(aLi[i], "mouseout"function () 
  230. this.className = ""
  231. var oA = get.byTagName("a", get.byClass("times"this)[0])[0]; 
  232. oA.style.display = "none" 
  233.  
  234. }) 
  235. liHover(); 
  236.  
  237. //删除功能 
  238. function delLi() 
  239. var aA = get.byClass("del", oUl); 
  240.  
  241. for (i = 0; i < aA.length; i++) 
  242. aA[i].onclick = function () 
  243. var oParent = this.parentNode.parentNode.parentNode; 
  244. var alpha = 100; 
  245. var iHeight = oParent.offsetHeight; 
  246. timer = setInterval(function () 
  247. css(oParent, "opacity", (alpha -= 10)); 
  248. if (alpha < 0) 
  249. clearInterval(timer); 
  250.  
  251. timer = setInterval(function () 
  252. iHeight -= 10; 
  253. iHeight < 0 && (iHeight = 0); 
  254. css(oParent, "height", iHeight + "px"); 
  255. iHeight == 0 && (clearInterval(timer), oUl.removeChild(oParent)) 
  256. },30) 
  257. }  
  258. },30);  
  259. this.onclick = null 
  260.  
  261. }  
  262. delLi(); 
  263.  
  264. //输入框获取焦点时样式 
  265. for (i = 0; i < aFtxt.length; i++) 
  266. EventUtil.addHandler(aFtxt[i], "focus"function () 
  267. {this.className = "active"});  
  268. EventUtil.addHandler(aFtxt[i], "blur"function () {this.className = ""}) 
  269.  
  270. //格式化时间, 如果为一位数时补0 
  271. function format(str) 
  272. return str.toString().replace(/^(/d)$/,"0$1"
  273.  
  274. //头像 
  275. for (i = 0; i < aImg.length; i++) 
  276. aImg[i].onmouseover = function () 
  277. this.className += " hover" 
  278. }; 
  279. aImg[i].onmouseout = function () 
  280. this.className = this.className.replace(//s?hover/,""
  281. }; 
  282. aImg[i].onclick = function () 
  283. for (i = 0; i < aImg.length; i++) aImg[i].className = ""
  284. this.className = "current" 
  285.  
  286. }); 
  287. </script> 
  288. </head> 
  289.  
  290.  
  291. <body> 
  292. <div id="msgBox"
  293. <form> 
  294. <h2>来 , 说说你在做什么 , 想什么</h2> 
  295. <div> 
  296. <input id="userName" class="f-text" value="" /> 
  297. <p id="face"><img src="face1.gif" class="current" /><img src="face2.gif" /><img src="face1.gif" /><img src="face2.gif" /></p> 
  298. </div> 
  299. <div><input id="conBox" class="f-text"></div> 
  300. <div class="tr"
  301. <p> 
  302. <span class="countTxt">还能输入</span><strong class="maxNum">140</strong><span>个字</span> 
  303. <input id="sendBtn" type="button" value="" title="快捷键 Ctrl+Enter" /> 
  304. </p> 
  305. </div> 
  306. </form> 
  307. <div class="list"
  308. <h3><span>大家在说</span></h3> 
  309. <ul> 
  310. <li> 
  311. <div class="userPic"><img src="face.gif" /></div> 
  312. <div class="content"
  313. <div class="userName"><a href="javascript:;">日丶久生情</a>:</div> 
  314. <div class="msgInfo">新增Ctrl+Enter快捷键发送广播。</div> 
  315. <div class="times"><span>07月05日 12:20</span><a class="del" href="javascript:;">删除</a></div> 
  316. </div> 
  317. </li> 
  318. <li> 
  319. <div class="userPic"><img src="face.gif" /></div> 
  320. <div class="content"
  321. <div class="userName"><a href="javascript:;">日丶久生情</a>:</div> 
  322. <div class="msgInfo">新增选择头像功能。</div> 
  323. <div class="times"><span>07月05日 12:08</span><a class="del" href="javascript:;">删除</a></div> 
  324. </div> 
  325. </li> 
  326. <li> 
  327. <div class="userPic"><img src="face.gif" /></div> 
  328. <div class="content"
  329. <div class="userName"><a href="javascript:;">日丶久生情</a>:</div> 
  330. <div class="msgInfo">增加了记录广播时间的功能。</div> 
  331. <div class="times"><span>07月04日 16:55</span><a class="del" href="javascript:;">删除</a></div> 
  332. </div> 
  333. </li> 
  334. </ul> 
  335. </div>  
  336. </div> 
  337. </body> 
  338. </html> 


以上所述就是本文给大家分享的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选