dom编程艺术章12
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){//自带的是insertBefore()方法
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.getElementById) return false;
if( !document.getElementsByTagName ) 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 url = window.location.href;
for(var i=0;i<links.length;i++){
var linkurl = links[i].getAttribute('href');
if( url.indexOf(linkurl) != -1 ){//如果在url(如…….html/live.html)中查找到了linkurl(如live.html),就添加here类
links[i].setAttribute('href','#');
links[i].className = 'here' ;
}
}
} function prepareSlideshow(){//图片库 第九章好像?
if(!document.getElementById('intro')) return false;
var slideshow = document.createElement('div');
slideshow.setAttribute('id','slideshow');
var frame = document.createElement('img');
frame.setAttribute('id','frame');
frame.setAttribute('src','images/frame.gif');
slideshow.appendChild(frame);
var preview = document.createElement('img');
preview.setAttribute('id','preview');
preview.setAttribute('src','images/slideshow.gif');
slideshow.appendChild(preview);
var intro = document.getElementById('intro');
insertAfter(slideshow,intro);
var links = document.getElementsByTagName('a');
for(var i=0;i<links.length;i++){
links[i].onmouseover=function(){
var destiation = this.getAttribute('href');
if( destiation.indexOf('index.html') != -1){
moveElement('preview',0,0,10);
}
if( destiation.indexOf('about.html') != -1){
moveElement('preview',-150,0,10);
}
if( destiation.indexOf('photos.html') != -1){
moveElement('preview',-300,0,10);
}
if( destiation.indexOf('live.html') != -1){
moveElement('preview',-450,0,10);
}
if( destiation.indexOf('contact.html') != -1){
moveElement('preview',-600,0,10);
} }
}
} function moveElement(elementID,final_x,final_y,interval){
var elem = document.getElementById(elementID);
if( !elem.style.left) {elem.style.left = 0;}
if( !elem.style.top) {elem.style.top = 0;}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
var dist;
if(elem.movement) { clearTimeout(elem.movement)};
if( xpos == final_x && ypos == final_y ){
return true;
}
if( xpos < final_x){
dist = Math.ceil((final_x - xpos)/10);
xpos = xpos + dist;
}
if( xpos > final_x){
dist = Math.ceil((xpos - final_x)/10);
xpos = xpos - dist;
}
if( ypos < final_y){
dist = Math.ceil((final_y - ypos)/10);
ypos = ypos + dist;
}
if( ypos > final_y){
dist = Math.ceil((final_y - ypos)/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);
}
//About
function prepareShowSection(){
if( !document.getElementById) return false;
if( !document.getElementsByTagName) return false;
var article = document.getElementsByTagName('article');
if( article.length == 0 ) return false;
var nav = article[0].getElementsByTagName('nav');
if( nav.length == 0 ) return false;
var links = nav[0].getElementsByTagName('a');
for(var i=0;i<links.length;i++){
document.getElementsByTagName('section')[i].style.display = 'none';
var sectionId = links[i].getAttribute('href').split('#')[1];
links[i].destination = sectionId;
if( !document.getElementById(sectionId)) continue;
links[i].onclick = function(){
showSection(this.destination);
return false;
}
} } 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';
}
}
} //photos
function preparePlaceholder(){
if( !document.getElementById) return false;
if( !document.getElementsByTagName ) return false;
if( !document.getElementById('imagegallery')) return false;
var placeholder = document.createElement('img');
placeholder.setAttribute('id','placeholder');
placeholder.setAttribute('src','images/placeholder.gif');
var description = document.createElement('p');
description.setAttribute('id','description');
var text = document.createTextNode('choose an image');
description.appendChild(text);
var imagegallery= document.getElementById('imagegallery');
insertAfter(description,imagegallery);
insertAfter(placeholder,description);
} function prepareGallery(){
if( !document.getElementById('imagegallery')) return false;
var imagegallery = document.getElementById('imagegallery');
var links = imagegallery.getElementsByTagName('a');
for(var i=0;i<links.length;i++){
links[i].onclick = function(){
return showpic(this);
}
}
} function showpic(whichpic){
if( !document.getElementById('placeholder')) return true;
var imageurl = whichpic.getAttribute('href');
var placeholder = document.getElementById('placeholder');
placeholder.setAttribute('src',imageurl);
if( !document.getElementById('description')) return false;
if( !whichpic.getAttribute('title')){
var title = '';
}else{
var title = whichpic.getAttribute('title');
}
var description = document.getElementById('description');
if( description.firstChild.nodeType == 3){
description.firstChild.nodeValue = title;
}
return false;
} //live
function stripeTables(){
var tables = document.getElementsByTagName('table');
for(var i=0;i<tables.length;i++){
var rows = tables[i].getElementsByTagName('tr');
var odd = false;
for(var j=0;j<rows.length;j++){
if( odd == false ){
odd = true;
}else{
addClass(rows[j],'odd');
odd = false;
}
}
}
} function highlightRows(){//表格斑马线样式
var tables = document.getElementsByTagName('table');
for(var i=0;i<tables.length;i++){
var rows = tables[i].getElementsByTagName('tr');
for(var j=0;j<rows.length;j++){
var oldClassname = rows[j].className;
rows[j].onmouseover = function(){
addClass(this,'highlight');
}
rows[j].onmouseout = function(){
this.className = oldClassname;
}
}
}
} function displayAbbreviations(){
if( !document.getElementsByTagName('abbr')) return false;
var defs = new Array();
var abbrs = document.getElementsByTagName('abbr');
if( abbrs.length ==0) return false;
for(var i=0;i<abbrs.length;i++){
if( abbrs[i].childNodes.length <1) continue;
var key = abbrs[i].firstChild.nodeValue;
var definition = abbrs[i].getAttribute('title');
defs[key] = definition;
}
var dlist = document.createElement('dl');
for(var key in defs){
var dtitle = document.createElement('dt');
var dtitle_text = document.createTextNode(key);
dtitle.appendChild(dtitle_text);
var ddtitle = document.createElement('dd');
var definition = defs[key];
var ddtitle_text = document.createTextNode(definition);
ddtitle.appendChild(ddtitle_text);
dlist.appendChild(dtitle);
dlist.appendChild(ddtitle);
}
var header = document.createElement('h3');
var header_text = document.createElement('Abbreviations');
header.appendChild(header_text);
var articles = document.getElementsByTagName('article');
if( articles.length == 0) return false;
articles[0].appendChild(header);
articles[0].appendChild(dlist); } /*contact*/
function focusLabels(){
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 elem = document.getElementById(id);
elem.focus();
} }
} 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;
}
}
} 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;
var placeholder = element.getAttribute('placeholder');
//element.className = 'placeholder';
//element.value = placeholder;
element.onfocus= function(){
var text = this.placeholder || this.getAttribute('placeholder');
if( this.value == text){
this.value = '';
} }
element.onblur = function(){
if( this.value == ''){
this.className = 'placeholder';
this.value = this.placeholder || this.getAttribute('placeholder');
}
}
element.onblur(); }
}
/*表单*/
function validateForm(whichform){//有效性检验
for(var i=0;i<whichform.elements.length;i++){
var elem = whichform.elements[i];
var elem_required = elem.required || elem.getAttribute('required');
if( elem_required == '' || elem_required == 'required'){
var elem_name = elem.name || elem.getAttribute('name');
if( !isFilled(elem) ){
alert('please fill in '+elem_name +' '+'field.');
return false;
}
if( elem.getAttribute('id') == 'email'){ //或者elem.type == 'email'
if( !isEmail(elem)){
alert('请输入正确的邮箱地址');
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);
} /*ajax*/
function submitFormWithAjax(whichform,thetarget){
var request = getHTTPObject();
if(!request) return false;
displayAjaxLoading(thetarget);
var dataParts = [];
for(i=0;i<whichform.elements.length;i++){
var elem = whichform.elements[i];
dataParts[i] = elem.getAttribute('name') + '=' + encodeURIComponent(elem.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];//注意match[0]与match[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 getHTTPObject(){
if(typeof XMLHttpRequest == 'undefined'){
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;
}else{
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);
console.log(element);
}
dom编程艺术章12的更多相关文章
- DOM编程艺术章12:一个简单的Ajax例子
大概入了JavaScript的门,现在要回过头恶补Ajax和json了,随手翻到dom编程艺术发现有一个适合回忆的例子,先抄录下来,引入对Ajax作用的大概印象,再去掰开了研究. <!DOCTY ...
- 《JavaScript Dom 编程艺术》读书笔记-第4章
我的前端入门第一本书是<JavaScript Dom 编程艺术>,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和<JavaScript 高级程序设计>了.之所以先选这本 ...
- JavaScript DOM编程艺术第一章:JavaScript简史
本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...
- JavaScript DOM编程艺术(第2版)的简单总结
介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- 《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。
在<JavaScript dom 编程艺术>第11章学来的. 相对于用JavaScript替换文本框的提示语句 <!DOCTYPE html> <html lang=&q ...
- 《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数
刚刚开始自学前端,如果不对请指正:欢迎各位技术大牛指点. 开始学习<javascript dom编程艺术>,整理一下学习到的知识.今天刚刚看到第六章,记下get到的几个知识点. 优雅降级 ...
- 《DOM编程艺术》读书笔记<概述>
作为一名前端开发工程师,学习的过程中总少不了各种各样的书籍,作为新手如何在众多书籍中选到适合自己的呢,我们今天先来谈谈<DOM编程艺术>这本书. 其实呢大部分书都是好书,就像LOL中大部分 ...
- Javascript DOM 编程艺术(第二版)读书笔记——基本语法
Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...
随机推荐
- WebService C#开发/调用
简单描述C#开发WebService操作步骤以及调用方式 WebService开发 第一步:创建Web空项目 第二步:为创建的Web空项目添加Web服务 第三步:实现WebService方法(仅供参考 ...
- 简单说throw和throws的区别
1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...
- node.js 学习的一个链接
Node.js简介 点击查看 狼叔 的
- Android Studio 小技巧
请参照http://blog.csdn.net/jdsjlzx/article/details/50689047 个人认为较有用: 30
- pyqt4 利用信号槽在子线程里面操作Qt界面
转载:ABigCaiBird #-*- coding:utf-8 -*- ####### from PyQt4.QtCore import * from PyQt4.QtGui import * im ...
- .NET使用Task动态创建多任务多线程并行程序计算Redis集群keys计算
Task是一个很好用的多任务处理类,并且通过Task可以对任务进行很好的控制. 下面将通过代码实现Redis集群在使用IServer.keys时通过多任务对多个服务器示例进行并行计算,并对返回key做 ...
- JSON: 介绍、应用
ylbtech-JSON: 介绍.应用 JSONP(JSON with Padding)是 JSON 的一种“使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为什么我们从不同的 ...
- go语言学习--protobuf的学习
最近在学习中遇到了protobuf,哇喔竟然不知道,马上进行了学习,protobuf也是数据解析的方式,平时使用最多的是json和xml,那么好了,对比下他们的区别,并且附上protobuf的使用. ...
- win7开始菜单路径
按Win + R, 输入C:\Users\zhouwanchun\AppData\Roaming\Microsoft\Windows\Start Menu 点击确定
- ubuntu下 net core 安装web模板
---恢复内容开始--- 今天想试试在Linux用C#开发WebAPI,查了下,要用: dotnet new -t Web 来建立工程,结果我试了下,出来这段: Invalid input switc ...