Javascript DOM编程艺术JS代码
- //com
- function addLoadEvent (func) {
- var oldonload = window.onload;
- if (typeof window.onload != 'function') {
- window.onload = func;
- }
- else {
- window.onload = function(){
- oldonload();
- func();
- }
- }
- }
- function insertAfter (newElement,targetElement) {
- var parent = targetElement.parentNode;
- if (parent.lastChild == targetElement) {
- parent.appendChild(newElement);
- }else {
- parent.insertBefore(newElement,targetElement.nextSibling);
- }
- }
- function addClass (element,value) {
- if(!element.className){
- element.className = value;
- } else{
- newClassName = element.className;
- newClassName += "";
- newClassName +=value;
- element.className = newClassName;
- }
- }
- function highlightPage () {
- if (!document.getElementsByTagName) { return false; }
- if (!document.getElementById) return false;
- var headers = document.getElementsByTagName('header');
- var navs = headers[0].getElementsByTagName('nav');
- var links = navs[0].getElementsByTagName('a');
- var linkurl;
- for (var i = 0; i < links.length; i++) {
- linkurl = links[i].getAttribute("href");
- if (window.location.href.indexOf(linkurl) != -1) {
- addClass(links[i],"here");
- var linktext = links[i].lastChild.nodeValue.toLowerCase();
- document.body.setAttribute("id", linktext);
- }
- }
- }
- //home
- function moveElement (elementID,final_x,final_y,interval) {
- if (!document.getElementById) { return false; }
- if (!document.getElementById(elementID)) { return false; }
- var elem = document.getElementById(elementID);
- if (elem.movement) {
- clearTimeout(elem.movement);
- }
- if (!elem.style.left) {
- elem.style.left = "0px";
- }
- if (!elem.style.top) {
- elem.style.top = "0px";
- }
- var xpos = parseInt(elem.style.left, 10);
- var ypos = parseInt(elem.style.top, 10);
- if (xpos == final_x && ypos == final_y) {
- return true;
- }
- if (xpos < final_x) {
- var dist = Math.ceil((final_x-xpos)/10);
- xpos = xpos + dist;
- }
- if (xpos > final_x) {
- var dist = Math.ceil((xpos-final_x)/10);
- xpos = xpos - dist;
- }
- if (ypos < final_y) {
- var dist = Math.ceil((final_y-ypos)/10);
- ypos = ypos+dist;
- }
- if (ypos > final_y) {
- var dist = Math.ceil((ypos-final_y)/10);
- ypos = ypos-dist;
- }
- elem.style.left = xpos + "px";
- elem.style.top = ypos + "px";
- var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
- elem.movement = setTimeout(repeat,interval);
- }
- function prepareSlideshow () {
- if (!document.getElementsByTagName) return false;
- if (!document.getElementById) return false;
- if (!document.getElementById("intro")) return false;
- var intro = document.getElementById('intro');
- var slideshow = document.createElement("div");
- slideshow.setAttribute("id", "slideshow");
- var frame = document.createElement("img");
- frame.setAttribute("src", "images/frame.gif");
- frame.setAttribute("id", "frame");
- slideshow.appendChild(frame);
- var preview = document.createElement("img");
- preview.setAttribute("src", "images/slideshow.gif");
- preview.setAttribute("alt", 'which you');
- preview.setAttribute("id", "preview");
- slideshow.appendChild(preview);
- insertAfter(slideshow,intro);
- var links = document.getElementsByTagName("a");
- var destination;
- for (var i = 0; i < links.length; i++) {
- links[i].onmouseover = function () {
- destination = this.getAttribute("href");
- if (destination.indexOf("index.html") != -1) {
- moveElement("preview",0,0,5);
- }
- if (destination.indexOf("about.html") != -1) {
- moveElement("preview",-150,0,5);
- }
- if (destination.indexOf("photos.html") != -1) {
- moveElement("preview",-300,0,5);
- }
- if (destination.indexOf("live.html") != -1) {
- moveElement("preview",-450,0,5);
- }
- if (destination.indexOf("contact.html") != -1) {
- moveElement("preview",-600,0,5);
- }
- }
- }
- }
- // About
- function showSection (id) {
- var sections = document.getElementsByTagName("section");
- for (var i = 0; i < sections.length; i++) {
- if (sections[i].getAttribute('id') != id) {
- sections[i].style.display = "none";
- } else {
- sections[i].style.display = "block";
- }
- }
- }
- function prepareInternalnav () {
- if(!document.getElementById) {
- return false;
- }
- if(!document.getElementsByTagName){
- return false;
- }
- var articles = document.getElementsByTagName("article");
- if (articles.length === 0) { return false;}
- var navs = articles[0].getElementsByTagName("nav");
- if (navs.length === 0) { return false;}
- var links = navs[0].getElementsByTagName("a");
- for (var i = 0; i < links.length; i++) {
- var sectionId = links[i].getAttribute("href").split("#")[1];
- if (!document.getElementById(sectionId)) { continue;}
- document.getElementById(sectionId).style.display = "none";
- links[i].destination = sectionId;
- links[i].onclick = function () {
- showSection(this.destination);
- return false;
- }
- }
- }
- //photos
- function showPic (whichpic) {
- if (!document.getElementById('placeholder')) { return false; }
- var source = whichpic.getAttribute("href");
- var placeholder = document.getElementById("placeholder");
- placeholder.setAttribute("src", source);
- if (!document.getElementById('description')) { return false;}
- var whictit = whichpic.getAttribute("title");
- if(whictit){
- var text = whictit;
- }else {
- var text = "";
- }
- var description = document.getElementById('description');
- if (description.firstChild.nodeType == 3) {
- description.firstChild.nodeValue = text;
- }
- return false;
- }
- function preparePlaceholder () {
- if (!document.createElement) { return false;}
- if (!document.createTextNode) {return false;}
- if (!document.getElementById) {return false;}
- if (!document.getElementById('imagegallery')) {return false;}
- var placeholder = document.createElement("img");
- placeholder.setAttribute("id", "placeholder");
- placeholder.setAttribute("src", "images/placeholder.gif");
- placeholder.setAttribute("alt", "my image gallery");
- var description = document.createElement("p");
- description.setAttribute("id", "description");
- var destxt = document.createTextNode("Choose an image");
- description.appendChild(destxt);
- var gallery = document.getElementById('imagegallery');
- insertAfter(description,gallery);
- insertAfter(placeholder,description);
- }
- function prepareGallery() {
- if (!document.getElementsByTagName) {return false;}
- if (!document.getElementById) {return false;}
- if (!document.getElementById('imagegallery')) {return false;}
- var gallery = document.getElementById('imagegallery');
- var links = gallery.getElementsByTagName("a");
- for (var i = 0; i < links.length; i++) {
- links[i].onclick = function () {
- return showPic(this);
- }
- }
- }
- //live
- function stripeTables () {
- if (!document.getElementsByTagName) { return false;}
- var tabs = document.getElementsByTagName('table');
- for (var i = 0; i < tabs.length; i++) {
- var odd = false;
- var trs = tabs[i].getElementsByTagName("tr");
- for (var j = 0; j < trs.length; j++) {
- if (odd == true) {
- addClass(trs[j],"odd");
- odd = false;
- }else {
- odd =true;
- }
- }
- }
- }
- function highlightRows() {
- if (!document.getElementsByTagName) { return false;}
- var trs = document.getElementsByTagName('tr');
- for (var i = 0; i < trs.length; i++) {
- trs[i].oldClassName = trs[i].className;
- trs[i].onmouseover = function () {
- addClass(this,'highlight')
- };
- trs[i].onmouseout = function () {
- this.className = this.oldClassName;
- }
- }
- }
- function displayAbbreviations () {
- if (!document.getElementsByTagName || !document.createElement || !document.createTextNode) {return false;}
- var abbreviations = document.getElementsByTagName('abbr');
- if (abbreviations.length < 1) { return false;}
- var defs = new Array();
- for (var i = 0; i < abbreviations.length; i++) {
- var current_abbr = abbreviations[i];
- if(current_abbr.lastChild.nodeValue.length < 1){ continue;}
- var definition = current_abbr.getAttribute("title");
- var key = current_abbr.lastChild.nodeValue;
- defs[key] = definition;
- }
- var dlist = document.createElement("dl");
- for (key in defs) {
- var definition = defs[key];
- var dts = document.createElement('dt');
- var dt_txt = document.createTextNode(key);
- dts.appendChild(dt_txt);
- var dds = document.createElement('dd');
- var dd_txt = document.createTextNode(definition);
- dds.appendChild(dd_txt);
- dlist.appendChild(dts);
- dlist.appendChild(dds);
- }
- if (dlist.childNodes.length < 1) { return false;}
- var header = document.createElement("h3");
- var header_text = document.createTextNode("Abbreviations");
- header.appendChild(header_text);
- var article = document.getElementsByTagName('article');
- if (article.length == 0) {return false;}
- var articleo= article[0];
- articleo.appendChild(header);
- articleo.appendChild(dlist);
- }
- //contant
- function focusLabels () {
- if (!document.getElementsByTagName) { return false;}
- var labels = document.getElementsByTagName('label');
- for (var i = 0; i < labels.length; i++) {
- if (!labels[i].getAttribute("for")) { continue;}
- labels[i].onclick = function() {
- var l_id = this.getAttribute("for");
- if(!document.getElementById(l_id)){ return false;}
- var element = document.getElementById(l_id);
- element.focus();
- }
- }
- }
- function resetFields (whichform) {
- //如果if返回true则结束当前函数
- if (Modernizr.input.placeholder) return;
- for (var i = 0; i < whichform.elements.length; i++) {
- var element = whichform.elements[i];
- if(element.type == "submit") continue;
- var check = element.placeholder || element.getAttribute("placeholder");
- if(!check) continue;
- element.onfocus = function () {
- var text = this.placeholder || this.getAttribute("placeholder");
- if (this.value == text) {
- this.value = "";
- this.className = "";
- }
- }
- element.onblur = function () {
- if (this.value == "") {
- this.value = this.placeholder || this.getAttribute("placeholder");
- this.className = "placeholder";
- }
- }
- element.onblur();
- }
- }
- function validateForm(whichform) {
- for (var i = 0; i < whichform.elements.length; i++) {
- var element = whichform.elements[i];
- if (element.getAttribute('required') == 'required') {
- if (!isFilled(element)) {
- alert("Please fill in the "+element.name+"field");
- return false;
- }
- }
- if (element.getAttribute('type') == "email") {
- if (!isEmail(element)) {
- alert("The"+element.name+"field must be a valid email address.");
- return false;
- }
- }
- }
- return true;
- }
- // function isFilled (field) {
- // if (field.value.replace(' ','').length == 0) { return false;}
- // var placeholder = field.placeholder || field.getAttribute('placeholder');
- // return (field.value != placeholder);
- // }
- // function isEmail (field) {
- // return (field.value.indexOf('@') != -1 || field.value.indexOf('.') != -1);
- // }
- function isFilled(field) {
- return (field.value.length > 1 && field.value != field.placeholder);
- }
- function isEmail(field) {
- return (field.value.indexOf("@") != -1 && field.value.indexOf(".") != -1);
- }
- function prepareForms () {
- for (var i = 0; i < document.forms.length; i++) {
- var thisform = document.forms[i];
- resetFields(thisform);
- thisform.onsubmit = function () {
- if (!validateForm(this)) { return false; }
- var article = document.getElementsByTagName('article')[0];
- if (submitFormWithAjax(this, article)) return false;
- return true;
- }
- }
- }
- //ajax
- function getHTTPObject () {
- if (typeof XMLHttpRequest == "undefined")
- XMLHttpRequest = function () {
- try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
- catch (e) {}
- try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
- catch (e) {}
- try { return new ActiveXObject("Msxml2.XMLHTTP"); }
- catch (e) {}
- return false;
- }
- return new XMLHttpRequest();
- }
- function displayAjaxLoading (element) {
- while (element.hasChildNodes()) {
- element.removeChild(element.lastChild);
- }
- var content = document.createElement('img');
- content.setAttribute("src", "images/loading.gif");
- content.setAttribute("alt", "Loading...");
- element.appendChild(content);
- }
- function submitFormWithAjax (whichform,thetarget) {
- var request = getHTTPObject();
- if (!request) { return false; }
- displayAjaxLoading(thetarget);
- var dataParts = [];
- var element;
- for (var i = 0; i < whichform.elements.length; i++) {
- element = whichform.elements[i];
- dataParts[i] = element.name + '=' + encodeURIComponent(element.value);
- }
- var data = dataParts.join('&');
- request.open('POST', whichform.getAttribute("action"), true);
- request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
- request.onreadystatechange = function () {
- //验证当前文档的状态
- if (request.readyState == 4) {
- //响应成功
- if (request.status == 200 || request.status == 0) {
- //读取响应文本match()可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
- var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/);
- if (matches.length > 0) {
- thetarget.innerHTML = matches[1];
- } else {
- thetarget.innerHTML = '<p>Oops, there was an error. Sorry.</p>';
- }
- } else {
- thetarget.innHTML = '<p> + request.statusText + </p>';
- }
- }
- };
- request.send(data);
- return true;
- }
- function loadEvents() {
- // home
- prepareSlideshow();
- // about
- prepareInternalnav();
- // photos
- preparePlaceholder();
- prepareGallery();
- //live
- stripeTables ();
- highlightRows();
- displayAbbreviations();
- //contact
- focusLabels ();
- prepareForms ();
- }
- // Load events
- addLoadEvent(highlightPage);
- addLoadEvent(loadEvents);
书中的综合案例,讲述了部分常用的函数
Javascript DOM编程艺术JS代码的更多相关文章
- JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析
先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...
- JavaScript DOM编程艺术读后感(1)—— 平稳退化
最近,在读<JavaScript DOM编程艺术(第二版)>这本书,想着将自己的读后感记录下来,作为记忆吧. 其实我并不是最近才刚开始读这本书的,我读了有一段时间了.我是一名web前端开发 ...
- 《JavaScript Dom 编程艺术》读书笔记-第4章
我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...
- Javascript DOM 编程艺术(第二版)读书笔记——基本语法
Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...
- 《JavaScript DOM 编程艺术》 学习笔记
目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- JavaScript DOM编程艺术第一章:JavaScript简史
本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...
- 《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。
在<JavaScript dom 编程艺术>第11章学来的. 相对于用JavaScript替换文本框的提示语句 <!DOCTYPE html> <html lang=&q ...
随机推荐
- c#中传递参数前加out
首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次: rel 可以把参数的数值传递进函数,但是 out 是要把参数清空,就是说你无法把一个数值 从 out 传递进去的, out 进去后, ...
- 软件测试作业三 尝试使用JUnit
写一个判断三角形种类的代码,对其进行测试. 判断三角形代码: package 测试1; public class sjx { public String f(int a,int b,int c) { ...
- Java的反射机制及应用实例
一:什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在Java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 二:哪里用到反射机制 我们用过一些知识,但是并 ...
- 安装fedora 16 之后
电脑换了windows 8 系统之后,再装fedora,发现只有16可以正常安装而且是在win8里安装easyBCD,才能正常启动windows,这是我反复装了很多次才发现此情况的.无奈只能继续使用1 ...
- css布局学习笔记之position属性
position属性用于定位元素,它的几个值分别如下: 1,static static 是默认值.任意 position: static; 的元素不会被特殊的定位.一个 static 元素表示它不会被 ...
- HDU 题目分类收集
并查集题型简单并查集1213 How Many Tables 1232 畅通工程 (杭电简单的并查集不是很多) 简单最小生成树1233 还是畅通工程 1863 畅通工程 1874 畅通工程再续 187 ...
- Keil C51汉字显示的bug问题(0xFD问题)
一.缘起 这两天改进MCU的液晶显示方法,采用“即编即显”的思路,编写了一个可以直接显示字符串的程序.如程序调用disstr("我是你老爸");液晶屏上就会显示“我是你老爸”. 二 ...
- 线程池 异步I/O线程 <第三篇>
在学习异步之前先来说说异步的好处,例如对于不需要CPU参数的输入输出操作,可以将实际的处理步骤分为以下三步: 启动处理: 实际的处理,此时不需要CPU参数: 任务完成后的处理: 以上步骤如果仅仅使用一 ...
- HttpContext请求上下文对象
一.HttpContext概述 HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的 ...
- 【Mysql 调用存储过程,输出参数的坑】
玛德,数据行都返回过来了,就是没有输出参数!!! 扒官方设计文档:这么一段 雷死人了!!! When a stored procedure is called using MySqlCommand.E ...