1. //com
  2. function addLoadEvent (func) {
  3. var oldonload = window.onload;
  4. if (typeof window.onload != 'function') {
  5. window.onload = func;
  6. }
  7. else {
  8. window.onload = function(){
  9. oldonload();
  10. func();
  11. }
  12. }
  13. }
  14. function insertAfter (newElement,targetElement) {
  15. var parent = targetElement.parentNode;
  16. if (parent.lastChild == targetElement) {
  17. parent.appendChild(newElement);
  18. }else {
  19. parent.insertBefore(newElement,targetElement.nextSibling);
  20. }
  21. }
  22. function addClass (element,value) {
  23. if(!element.className){
  24. element.className = value;
  25. } else{
  26. newClassName = element.className;
  27. newClassName += "";
  28. newClassName +=value;
  29. element.className = newClassName;
  30. }
  31. }
  32.  
  33. function highlightPage () {
  34. if (!document.getElementsByTagName) { return false; }
  35. if (!document.getElementById) return false;
  36. var headers = document.getElementsByTagName('header');
  37. var navs = headers[0].getElementsByTagName('nav');
  38. var links = navs[0].getElementsByTagName('a');
  39. var linkurl;
  40. for (var i = 0; i < links.length; i++) {
  41. linkurl = links[i].getAttribute("href");
  42. if (window.location.href.indexOf(linkurl) != -1) {
  43. addClass(links[i],"here");
  44. var linktext = links[i].lastChild.nodeValue.toLowerCase();
  45. document.body.setAttribute("id", linktext);
  46. }
  47. }
  48. }
  49.  
  50. //home
  51. function moveElement (elementID,final_x,final_y,interval) {
  52. if (!document.getElementById) { return false; }
  53. if (!document.getElementById(elementID)) { return false; }
  54. var elem = document.getElementById(elementID);
  55. if (elem.movement) {
  56. clearTimeout(elem.movement);
  57. }
  58. if (!elem.style.left) {
  59. elem.style.left = "0px";
  60. }
  61. if (!elem.style.top) {
  62. elem.style.top = "0px";
  63. }
  64. var xpos = parseInt(elem.style.left, 10);
  65. var ypos = parseInt(elem.style.top, 10);
  66. if (xpos == final_x && ypos == final_y) {
  67. return true;
  68. }
  69. if (xpos < final_x) {
  70. var dist = Math.ceil((final_x-xpos)/10);
  71. xpos = xpos + dist;
  72. }
  73. if (xpos > final_x) {
  74. var dist = Math.ceil((xpos-final_x)/10);
  75. xpos = xpos - dist;
  76. }
  77. if (ypos < final_y) {
  78. var dist = Math.ceil((final_y-ypos)/10);
  79. ypos = ypos+dist;
  80. }
  81. if (ypos > final_y) {
  82. var dist = Math.ceil((ypos-final_y)/10);
  83. ypos = ypos-dist;
  84. }
  85. elem.style.left = xpos + "px";
  86. elem.style.top = ypos + "px";
  87. var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
  88. elem.movement = setTimeout(repeat,interval);
  89.  
  90. }
  91. function prepareSlideshow () {
  92. if (!document.getElementsByTagName) return false;
  93. if (!document.getElementById) return false;
  94. if (!document.getElementById("intro")) return false;
  95. var intro = document.getElementById('intro');
  96. var slideshow = document.createElement("div");
  97. slideshow.setAttribute("id", "slideshow");
  98. var frame = document.createElement("img");
  99. frame.setAttribute("src", "images/frame.gif");
  100. frame.setAttribute("id", "frame");
  101. slideshow.appendChild(frame);
  102. var preview = document.createElement("img");
  103. preview.setAttribute("src", "images/slideshow.gif");
  104. preview.setAttribute("alt", 'which you');
  105. preview.setAttribute("id", "preview");
  106. slideshow.appendChild(preview);
  107. insertAfter(slideshow,intro);
  108. var links = document.getElementsByTagName("a");
  109. var destination;
  110. for (var i = 0; i < links.length; i++) {
  111. links[i].onmouseover = function () {
  112. destination = this.getAttribute("href");
  113. if (destination.indexOf("index.html") != -1) {
  114. moveElement("preview",0,0,5);
  115. }
  116. if (destination.indexOf("about.html") != -1) {
  117. moveElement("preview",-150,0,5);
  118. }
  119. if (destination.indexOf("photos.html") != -1) {
  120. moveElement("preview",-300,0,5);
  121. }
  122. if (destination.indexOf("live.html") != -1) {
  123. moveElement("preview",-450,0,5);
  124. }
  125. if (destination.indexOf("contact.html") != -1) {
  126. moveElement("preview",-600,0,5);
  127. }
  128. }
  129. }
  130. }
  131.  
  132. // About
  133.  
  134. function showSection (id) {
  135. var sections = document.getElementsByTagName("section");
  136. for (var i = 0; i < sections.length; i++) {
  137. if (sections[i].getAttribute('id') != id) {
  138. sections[i].style.display = "none";
  139. } else {
  140. sections[i].style.display = "block";
  141. }
  142. }
  143. }
  144. function prepareInternalnav () {
  145. if(!document.getElementById) {
  146. return false;
  147. }
  148. if(!document.getElementsByTagName){
  149. return false;
  150. }
  151. var articles = document.getElementsByTagName("article");
  152. if (articles.length === 0) { return false;}
  153. var navs = articles[0].getElementsByTagName("nav");
  154. if (navs.length === 0) { return false;}
  155. var links = navs[0].getElementsByTagName("a");
  156. for (var i = 0; i < links.length; i++) {
  157. var sectionId = links[i].getAttribute("href").split("#")[1];
  158. if (!document.getElementById(sectionId)) { continue;}
  159. document.getElementById(sectionId).style.display = "none";
  160. links[i].destination = sectionId;
  161. links[i].onclick = function () {
  162. showSection(this.destination);
  163. return false;
  164. }
  165. }
  166. }
  167. //photos
  168.  
  169. function showPic (whichpic) {
  170. if (!document.getElementById('placeholder')) { return false; }
  171. var source = whichpic.getAttribute("href");
  172. var placeholder = document.getElementById("placeholder");
  173. placeholder.setAttribute("src", source);
  174. if (!document.getElementById('description')) { return false;}
  175. var whictit = whichpic.getAttribute("title");
  176. if(whictit){
  177. var text = whictit;
  178. }else {
  179. var text = "";
  180. }
  181. var description = document.getElementById('description');
  182. if (description.firstChild.nodeType == 3) {
  183. description.firstChild.nodeValue = text;
  184. }
  185. return false;
  186.  
  187. }
  188. function preparePlaceholder () {
  189. if (!document.createElement) { return false;}
  190. if (!document.createTextNode) {return false;}
  191. if (!document.getElementById) {return false;}
  192. if (!document.getElementById('imagegallery')) {return false;}
  193. var placeholder = document.createElement("img");
  194. placeholder.setAttribute("id", "placeholder");
  195. placeholder.setAttribute("src", "images/placeholder.gif");
  196. placeholder.setAttribute("alt", "my image gallery");
  197. var description = document.createElement("p");
  198. description.setAttribute("id", "description");
  199. var destxt = document.createTextNode("Choose an image");
  200. description.appendChild(destxt);
  201. var gallery = document.getElementById('imagegallery');
  202. insertAfter(description,gallery);
  203. insertAfter(placeholder,description);
  204. }
  205. function prepareGallery() {
  206. if (!document.getElementsByTagName) {return false;}
  207. if (!document.getElementById) {return false;}
  208. if (!document.getElementById('imagegallery')) {return false;}
  209. var gallery = document.getElementById('imagegallery');
  210. var links = gallery.getElementsByTagName("a");
  211. for (var i = 0; i < links.length; i++) {
  212. links[i].onclick = function () {
  213. return showPic(this);
  214. }
  215. }
  216.  
  217. }
  218.  
  219. //live
  220.  
  221. function stripeTables () {
  222. if (!document.getElementsByTagName) { return false;}
  223. var tabs = document.getElementsByTagName('table');
  224. for (var i = 0; i < tabs.length; i++) {
  225. var odd = false;
  226. var trs = tabs[i].getElementsByTagName("tr");
  227. for (var j = 0; j < trs.length; j++) {
  228. if (odd == true) {
  229. addClass(trs[j],"odd");
  230. odd = false;
  231. }else {
  232. odd =true;
  233. }
  234. }
  235. }
  236. }
  237.  
  238. function highlightRows() {
  239. if (!document.getElementsByTagName) { return false;}
  240. var trs = document.getElementsByTagName('tr');
  241. for (var i = 0; i < trs.length; i++) {
  242. trs[i].oldClassName = trs[i].className;
  243. trs[i].onmouseover = function () {
  244. addClass(this,'highlight')
  245. };
  246. trs[i].onmouseout = function () {
  247. this.className = this.oldClassName;
  248. }
  249. }
  250. }
  251. function displayAbbreviations () {
  252. if (!document.getElementsByTagName || !document.createElement || !document.createTextNode) {return false;}
  253. var abbreviations = document.getElementsByTagName('abbr');
  254. if (abbreviations.length < 1) { return false;}
  255. var defs = new Array();
  256. for (var i = 0; i < abbreviations.length; i++) {
  257. var current_abbr = abbreviations[i];
  258. if(current_abbr.lastChild.nodeValue.length < 1){ continue;}
  259. var definition = current_abbr.getAttribute("title");
  260. var key = current_abbr.lastChild.nodeValue;
  261. defs[key] = definition;
  262. }
  263. var dlist = document.createElement("dl");
  264. for (key in defs) {
  265. var definition = defs[key];
  266. var dts = document.createElement('dt');
  267. var dt_txt = document.createTextNode(key);
  268. dts.appendChild(dt_txt);
  269. var dds = document.createElement('dd');
  270. var dd_txt = document.createTextNode(definition);
  271. dds.appendChild(dd_txt);
  272. dlist.appendChild(dts);
  273. dlist.appendChild(dds);
  274. }
  275. if (dlist.childNodes.length < 1) { return false;}
  276. var header = document.createElement("h3");
  277. var header_text = document.createTextNode("Abbreviations");
  278. header.appendChild(header_text);
  279. var article = document.getElementsByTagName('article');
  280. if (article.length == 0) {return false;}
  281. var articleo= article[0];
  282. articleo.appendChild(header);
  283. articleo.appendChild(dlist);
  284. }
  285.  
  286. //contant
  287.  
  288. function focusLabels () {
  289. if (!document.getElementsByTagName) { return false;}
  290. var labels = document.getElementsByTagName('label');
  291. for (var i = 0; i < labels.length; i++) {
  292. if (!labels[i].getAttribute("for")) { continue;}
  293. labels[i].onclick = function() {
  294. var l_id = this.getAttribute("for");
  295. if(!document.getElementById(l_id)){ return false;}
  296. var element = document.getElementById(l_id);
  297. element.focus();
  298. }
  299. }
  300. }
  301.  
  302. function resetFields (whichform) {
  303. //如果if返回true则结束当前函数
  304. if (Modernizr.input.placeholder) return;
  305. for (var i = 0; i < whichform.elements.length; i++) {
  306. var element = whichform.elements[i];
  307. if(element.type == "submit") continue;
  308. var check = element.placeholder || element.getAttribute("placeholder");
  309. if(!check) continue;
  310. element.onfocus = function () {
  311. var text = this.placeholder || this.getAttribute("placeholder");
  312. if (this.value == text) {
  313. this.value = "";
  314. this.className = "";
  315. }
  316. }
  317. element.onblur = function () {
  318. if (this.value == "") {
  319. this.value = this.placeholder || this.getAttribute("placeholder");
  320. this.className = "placeholder";
  321. }
  322. }
  323. element.onblur();
  324. }
  325. }
  326. function validateForm(whichform) {
  327. for (var i = 0; i < whichform.elements.length; i++) {
  328. var element = whichform.elements[i];
  329. if (element.getAttribute('required') == 'required') {
  330. if (!isFilled(element)) {
  331. alert("Please fill in the "+element.name+"field");
  332. return false;
  333. }
  334. }
  335. if (element.getAttribute('type') == "email") {
  336. if (!isEmail(element)) {
  337. alert("The"+element.name+"field must be a valid email address.");
  338. return false;
  339. }
  340. }
  341. }
  342. return true;
  343. }
  344.  
  345. // function isFilled (field) {
  346. // if (field.value.replace(' ','').length == 0) { return false;}
  347. // var placeholder = field.placeholder || field.getAttribute('placeholder');
  348. // return (field.value != placeholder);
  349. // }
  350. // function isEmail (field) {
  351. // return (field.value.indexOf('@') != -1 || field.value.indexOf('.') != -1);
  352. // }
  353. function isFilled(field) {
  354. return (field.value.length > 1 && field.value != field.placeholder);
  355. }
  356.  
  357. function isEmail(field) {
  358. return (field.value.indexOf("@") != -1 && field.value.indexOf(".") != -1);
  359. }
  360. function prepareForms () {
  361. for (var i = 0; i < document.forms.length; i++) {
  362. var thisform = document.forms[i];
  363. resetFields(thisform);
  364. thisform.onsubmit = function () {
  365. if (!validateForm(this)) { return false; }
  366. var article = document.getElementsByTagName('article')[0];
  367. if (submitFormWithAjax(this, article)) return false;
  368. return true;
  369.  
  370. }
  371. }
  372. }
  373.  
  374. //ajax
  375. function getHTTPObject () {
  376. if (typeof XMLHttpRequest == "undefined")
  377. XMLHttpRequest = function () {
  378. try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
  379. catch (e) {}
  380. try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
  381. catch (e) {}
  382. try { return new ActiveXObject("Msxml2.XMLHTTP"); }
  383. catch (e) {}
  384. return false;
  385.  
  386. }
  387. return new XMLHttpRequest();
  388. }
  389.  
  390. function displayAjaxLoading (element) {
  391. while (element.hasChildNodes()) {
  392. element.removeChild(element.lastChild);
  393. }
  394. var content = document.createElement('img');
  395. content.setAttribute("src", "images/loading.gif");
  396. content.setAttribute("alt", "Loading...");
  397. element.appendChild(content);
  398. }
  399. function submitFormWithAjax (whichform,thetarget) {
  400. var request = getHTTPObject();
  401. if (!request) { return false; }
  402. displayAjaxLoading(thetarget);
  403. var dataParts = [];
  404. var element;
  405. for (var i = 0; i < whichform.elements.length; i++) {
  406. element = whichform.elements[i];
  407. dataParts[i] = element.name + '=' + encodeURIComponent(element.value);
  408. }
  409. var data = dataParts.join('&');
  410. request.open('POST', whichform.getAttribute("action"), true);
  411. request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  412. request.onreadystatechange = function () {
  413. //验证当前文档的状态
  414. if (request.readyState == 4) {
  415. //响应成功
  416. if (request.status == 200 || request.status == 0) {
  417. //读取响应文本match()可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
  418. var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/);
  419. if (matches.length > 0) {
  420. thetarget.innerHTML = matches[1];
  421. } else {
  422. thetarget.innerHTML = '<p>Oops, there was an error. Sorry.</p>';
  423. }
  424. } else {
  425. thetarget.innHTML = '<p> + request.statusText + </p>';
  426. }
  427.  
  428. }
  429. };
  430. request.send(data);
  431. return true;
  432. }
  433. function loadEvents() {
  434. // home
  435. prepareSlideshow();
  436. // about
  437. prepareInternalnav();
  438. // photos
  439. preparePlaceholder();
  440. prepareGallery();
  441. //live
  442. stripeTables ();
  443. highlightRows();
  444. displayAbbreviations();
  445. //contact
  446. focusLabels ();
  447. prepareForms ();
  448. }
  449.  
  450. // Load events
  451. addLoadEvent(highlightPage);
  452. addLoadEvent(loadEvents);

书中的综合案例,讲述了部分常用的函数

Javascript DOM编程艺术JS代码的更多相关文章

  1. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

  2. JavaScript DOM编程艺术读后感(1)—— 平稳退化

    最近,在读<JavaScript DOM编程艺术(第二版)>这本书,想着将自己的读后感记录下来,作为记忆吧. 其实我并不是最近才刚开始读这本书的,我读了有一段时间了.我是一名web前端开发 ...

  3. 《JavaScript Dom 编程艺术》读书笔记-第4章

    我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...

  4. Javascript DOM 编程艺术(第二版)读书笔记——基本语法

    Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...

  5. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

  6. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  7. JavaScript DOM编程艺术学习笔记(一)

    嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...

  8. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

  9. 《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。

    在<JavaScript dom 编程艺术>第11章学来的. 相对于用JavaScript替换文本框的提示语句 <!DOCTYPE html> <html lang=&q ...

随机推荐

  1. c#中传递参数前加out

    首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次: rel 可以把参数的数值传递进函数,但是 out 是要把参数清空,就是说你无法把一个数值 从 out 传递进去的, out 进去后, ...

  2. 软件测试作业三 尝试使用JUnit

    写一个判断三角形种类的代码,对其进行测试. 判断三角形代码: package 测试1; public class sjx { public String f(int a,int b,int c) { ...

  3. Java的反射机制及应用实例

    一:什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在Java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 二:哪里用到反射机制 我们用过一些知识,但是并 ...

  4. 安装fedora 16 之后

    电脑换了windows 8 系统之后,再装fedora,发现只有16可以正常安装而且是在win8里安装easyBCD,才能正常启动windows,这是我反复装了很多次才发现此情况的.无奈只能继续使用1 ...

  5. css布局学习笔记之position属性

    position属性用于定位元素,它的几个值分别如下: 1,static static 是默认值.任意 position: static; 的元素不会被特殊的定位.一个 static 元素表示它不会被 ...

  6. HDU 题目分类收集

    并查集题型简单并查集1213 How Many Tables 1232 畅通工程 (杭电简单的并查集不是很多) 简单最小生成树1233 还是畅通工程 1863 畅通工程 1874 畅通工程再续 187 ...

  7. Keil C51汉字显示的bug问题(0xFD问题)

    一.缘起 这两天改进MCU的液晶显示方法,采用“即编即显”的思路,编写了一个可以直接显示字符串的程序.如程序调用disstr("我是你老爸");液晶屏上就会显示“我是你老爸”. 二 ...

  8. 线程池 异步I/O线程 <第三篇>

    在学习异步之前先来说说异步的好处,例如对于不需要CPU参数的输入输出操作,可以将实际的处理步骤分为以下三步: 启动处理: 实际的处理,此时不需要CPU参数: 任务完成后的处理: 以上步骤如果仅仅使用一 ...

  9. HttpContext请求上下文对象

    一.HttpContext概述 HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的 ...

  10. 【Mysql 调用存储过程,输出参数的坑】

    玛德,数据行都返回过来了,就是没有输出参数!!! 扒官方设计文档:这么一段 雷死人了!!! When a stored procedure is called using MySqlCommand.E ...