JavaScript DOM 編程藝術(2版) 綜合實例Band js代碼
function addLoadEvent(func)
{
var oldonload=window.onload;
if(typeof window.onload!='function')
{
window.onload=func;
}
else
{
window.onload=function()
{
oldonload();
func();
}
}
}
function addClass(element,value) {
if (!element.className) {
element.className = value;
} else {
newClassName = element.className;
newClassName+= " ";
newClassName+= value;
element.className = newClassName;
}
}
function insertAfter(newElement,targetElement)
{
var parent = targetElement.parentNode;
if(parent.lastChild==targetElement)
{
parent.appendChild(newElement);
}
else
{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
function highlightPage()
{
if(!document.getElementsByTagName) return false;
if(!document.getElementById) return false;
var headers=document.getElementsByTagName('header');
if(headers.length==0) return false;
var navs=headers[0].getElementsByTagName('nav');
if(navs.length==0) return false;
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)
{
links[i].className="here";
var linktext=links[i].lastChild.nodeValue.toLowerCase();
document.body.setAttribute("id",linktext);
return true;
}
}
}
/* moveElement */
function moveElement(elementID,final_x,final_y,interval){
if(!document.getElementById)return false;
if(!document.getElementsByTagName) 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);
var ypos=parseInt(elem.style.top);
if(xpos==final_x&&ypos==final_y){
return true;
}
if(xpos<final_x){
var dist=Math.ceil((final_x-xpos)/10);
xpos+=dist;
}
if(xpos>final_x){
var dist=Math.ceil((xpos-final_x)/10);
xpos-=dist;
}
if(ypos<final_y){
var dist=Math.ceil((final_y-ypos)/10);
ypos+=dist;
}
if(ypos>final_y){
var dist=Math.ceil((ypos-final_y)/10);
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);
}
/* prepareSlideshow */
function prepareSlideshow(){
if(!document.getElementById) return false;
if(!document.getElementsByTagName) return false;
if(!document.getElementById("intro")) return false;
var intro=document.getElementById("intro");
var slideshow=document.createElement("div");
slideshow.setAttribute("id","slideshow");
var preview =document.createElement("img");
preview.setAttribute("src","images/slideshow.gif");
preview.setAttribute("alt","a glimpse of what awaits 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",0,-450,5);
}
if(destination.indexOf("contact.html")!=-1){
moveElement("preview",0,-600,5);
}
}
}
console.log("ok");
}
/* 內部導航*/
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.getElementsByTagName) return false;
if(!document.getElementById) 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 nav=navs[0];
var links=articles[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;
}
links[i].class="here";
}
}
/* Javascript 圖片庫 */
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;
if(whichpic.getAttribute("title")){
var text=whichpic.getAttribute("title");
} 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 desctext=document.createTextNode("Choose an image");
description.appendChild(desctext);
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);
}
}
}
/* 增強表格*/
function stripeTables(){
if(!document.getElementsByTagName) return false;
var tables=document.getElementsByTagName("table");
for(var i=0;i<tables.length;i++){
var odd=false;
var rows=tables[i].getElementsByTagName("tr");
for(var j=0;j<rows.length;j++){
if(odd==true){
addClass(rows[j],"odd");
odd=false;
} else{
odd=true;
}
}
}
}
function highlightRows(){
if(!document.getElementsByTagName) return false;
var rows=document.getElementsByTagName("tr");
for(var i=0;i<rows.length;i++){
rows[i].oldClassName=rows[i].className;
rows[i].onmouseover=function(){
addClass(this,"highlight");
}
rows[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.childNodes.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 dtitle=document.createElement("dt");
var dtitle_text=document.createTextNode(key);
dtitle.appendChild(dtitle_text);
var ddesc=document.createElement("dd");
var ddesc_text=document.createTextNode(definition);
ddesc.appendChild(ddesc_text);
dlist.appendChild(dtitle);
dlist.appendChild(ddesc);
}
if(dlist.childNodes.length<1) return false;
var header=document.createElement("h3");
var header_text=document.createTextNode("Abbreviations");
header.appendChild(header_text);
var articles=document.getElementsByTagName("article");
if(articles.length==0) return false;
var container=articles[0];
container.appendChild(header);
container.appendChild(dlist);
}
/* 表單 */
/*單擊label , focus相應的input 項 */
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 id=this.getAttribute("for");
if(!document.getElementById(id)) return false;
var element=document.getElementById(id);
element.focus();
}
}
}
/* 表單 */
/*對不支持html5的browsers, 以javascript實現預填值 */
function resetFields(whichform){
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.className='';
this.value="";
}
}
element.onblur=function(){
if(this.value==""){
this.className='placeholder';
this.value=this.placeholder||this.getAttribute('placeholder');
}
}
element.onblur()
}
}
/* 表單 */
/* 是否已填寫表單內容驗證 */
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 validationForm(whichform){
for(var i=0;i<whichform.length;i++){
var element=whichform.elements[i];
if(element.required=='required'){
if(!isFilled(element)){
alert("Please fill in the "+element.name+" field.");
return false;
}
}
if(element.type=='email'){
console.log('not email address!');
if(!isEmail(element)){
alert("The "+element.name+" field must be a valid email address.");
console.log('not email address!');
return false;
}
}
}
return true;
}
/* 表單-Ajax */
/*return XMLHttpRequest*/
function getHTTPObject(){
if(typeof XMLHttpRequest=="undefined")
XMLHttpRquest=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 new XMLHttpRequest();
}
/* 表單-Ajax */
/*顯示加載圖片*/
function displayAjaxLoading(element){
while(element.hasChildNodes()){
element.removeChild(element.lastChild);
}
var content=document.createElement("img");
content.setAttribute("src","images/loading.gif");
content.setAttribute("width","50px");
content.setAttribute("alt","Loading.....");
element.appendChild(content);
}
/* 表單-Ajax */
/*Ajax提交表單函數*/
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){
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.innerHTML='<p>'+request.statusText+'</p>';
}
}
}
request.send(data);
return true;
}
/* 表單準備函數 */
function prepareForms(){
for(var i=0;i<document.forms.length;i++){
var thisform=document.forms[i];
resetFields(thisform);
thisform.onsubmit=function(){
if(!validationForm(this)) return false;
var article=document.getElementsByTagName('article')[0];
if(submitFormWithAjax(this,article)) return false;
return true;
}
}
}
addLoadEvent(highlightPage);
addLoadEvent(prepareSlideshow);
addLoadEvent(prepareInternalnav);
addLoadEvent(preparePlaceholder);
addLoadEvent(prepareGallery);
addLoadEvent(stripeTables);
addLoadEvent(highlightRows);
addLoadEvent(displayAbbreviations);
addLoadEvent(focusLabels);
addLoadEvent(prepareForms);
JavaScript DOM 編程藝術(2版) 綜合實例Band js代碼的更多相关文章
- JavaScript DOM编程艺术(第2版)的简单总结
介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...
- JavaScript DOM 编程艺术(第2版)读书笔记(1)
JavaScript 简史 JavaScript 是Netscape公司与Sun公司合作开发的.在 JavaScript 1.0发布时,Netscape Navigator主宰着浏览器市场.微软在推出 ...
- 《JavaScript Dom编程艺术》(第二版)
第一章<JavaScript简史> 1.JavaScript是一种脚本语言,通常只能通过Web浏览器去完成一些操作而不能像普通意义上的程序那样独立运行,它需要由Web浏览器进行解释和执行. ...
- 《JavaScript DOM 编程艺术(第2版)》读书笔记
阅读了本书第五章关于使用JavaScript的最佳实践,大部分的建议之前都有耳闻,不过阅读之后有更深的体会. 1.防止滥用JavaScript “不管你想通过JavaScript改变哪个网页的行为,都 ...
- JavaScript DOM 编程艺术(第2版)读书笔记 (9)
三位一体的网页 结构层:由HTML或XHTML之类的标记语言负责创建: 表示层:由CSS负责完成: 行为层:负责内容应该如何响应事件这一问题.这是由JavaScript语言和DOM主宰的领域. 分离 ...
- JavaScript DOM 编程艺术(第2版)读书笔记 (8)
<!--这章的内容略奇怪啊!可能是因为我之前没有接触过这些知识点,等以后用到的时候再回来翻阅吧,现在先简要介绍一下 js权限已通过,博客园好快的效率啊,谢谢O(∩_∩)O --> 缩略语 ...
- JavaScript DOM 编程艺术(第2版)读书笔记 (7)
动态创建标记 一些传统方法 document.write document.write()方法可以方便快捷的把字符串插入到文档里. 请把以下标记代码保存为一个文件,文件名就用test.html 好了. ...
- JavaScript DOM 编程艺术(第2版)读书笔记(5)
最佳实践 平稳退化 网站的访问者完全有可能使用的是不支持Javascript的浏览器,还有一种可能是虽然浏览器支持Javascript,但用户已经禁用它了.如果没有考虑到这种情况,人们在访问你们的网站 ...
- JavaScript DOM 编程艺术(第2版)读书笔记(4)
案例研究:JavaScript 图片库 改变图片的src属性的两种方式: 1,setAttribute方法是“第1级DOM”的组成部分,它可以设置元素节点的任意属性. 2,element.src = ...
随机推荐
- windows server 2012 如何开启 hyper-v 并创建虚拟机
当我们拿到一台新的windows server 2012 服务器的时候,默认hyper-v是没有开启的,如果我们要在windows server上面创建虚拟机,那么我们也就需要开启hyper-v. 开 ...
- Koa2实用入门
koa2已发布了一段时间,可以考虑入手,参见Node.js最新Web技术栈(2016年4月) 本文主要是koa 2的文档解读和runkoa介绍,让大家对koa 2有一个更简单直接的理解 一.依赖Nod ...
- ObjectMapper将json转对象报错处理
在使用ObjectMapper将json转对象,调用mapper.readValue(jsonStr, XwjUser.class)时,报如下错: com.fasterxml.jackson.data ...
- Jsp&Servlet入门级项目全程实录第8讲
惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.添加dao public int studentAdd(Connection con,Student studen ...
- 转载:SQL中的case when then else end用法
SQL中的case when then else end用法 来源: http://www.cnblogs.com/prefect/p/5746624.html Case具有两种格式.简单Case函数 ...
- Runtime初识
什么是Runtime 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @sel ...
- 一次单核CPU占用过高问题的处理
客户现场反馈,top的检查结果中,一个CPU的占用一直是100%.实际上现场有4个CPU,而且这个服务器是mysql专属服务器. 我的第一反应是io_thread一类的参数设置有问题,检查以后发现re ...
- 请比较throw 合throws的区别
throw语句用在方法体内,表示抛出异常.throws语句用在方法声明的后面,表示再抛出异常,由该方法的调用者来处理.throws主要声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常. ...
- php 多次导入文件导致 Cannot redeclare class
定义了类A b.php中导入了A c.php中导入了b.php c.php中导入A会报错:
- python 软件管理规范
一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ...