【DOM编程艺术】综合示例---全部代码

简介:

index.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css"/></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article>
    <h1>Welcome</h1>
    <p id="intro">Welcome to the official website of Jay Skript and the Domsters. Here, you can <a href="about.html">learn more about the band</a>, view <a href="photos.html">photos of the band</a>, find out about <a href="live.html">tour dates</a> and <a href="contact.html">get in touch with the band</a>.</p>
  </article>
  <script src="scripts/global.js"></script></body></html>

about.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters: About the band</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css" /></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article>
    <h1>About the band</h1>
    <nav>
      <ul>
        <li><a href="#jay">Jay Skript</a></li>
        <li><a href="#domsters">The Domsters</a></li>
      </ul>
    </nav>
    <section id="jay">
      <h2>Jay Skript</h2>
        <p>Jay Skript is going to rock your world!</p>
        <p>Together with his compatriots The Domsters,
      Jay is set for world domination. Just you wait and see.</p>
        <p>Jay Skript has been on the scene since the mid nineties.
      His talent hasn't always been recognized or fully appreciated.
      In the early days, he was often unfavorably compared to bigger,
      similarly-named artists. That's all in the past now.</p>
    </section>
    <section id="domsters">
      <h2>The Domsters</h2>
        <p>The Domsters have been around, in one form or another,
      for almost as long. It's only in the past few years that The Domsters
      have settled down to their current, stable line-up.
      Now they're a rock-solid bunch: methodical and dependable.</p>
    </section>
  </article>
  <script src="scripts/global.js"></script></body></html>

photos.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters: Photos</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css" /></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article>
    <h1>Photos of the band</h1>
    <ul id="imagegallery">
      <li>
        <a href="images/photos/concert.jpg" title="The crowd goes wild">
          <img src="images/photos/thumbnail_concert.jpg" alt="the band in concert" />
        </a>
      </li>
      <li>
        <a href="images/photos/bassist.jpg" title="An atmospheric moment">
          <img src="images/photos/thumbnail_bassist.jpg" alt="the bassist" />
        </a>
      </li>
      <li>
        <a href="images/photos/guitarist.jpg" title="Rocking out">
          <img src="images/photos/thumbnail_guitarist.jpg" alt="the guitarist" />
        </a>
      </li>
      <li>
        <a href="images/photos/crowd.jpg" title="Encore! Encore!">
          <img src="images/photos/thumbnail_crowd.jpg" alt="the audience" />
        </a>
      </li>
    </ul>
  </article>
  <script src="scripts/global.js"></script></body></html>

live.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters: Tour dates</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css" /></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article>
    <h1>Tour dates</h1>
    <table summary="when and where you can see the band">
      <thead>
      <tr>
        <th>Date</th>
        <th>City</th>
        <th>Venue</th>
      </tr>
      </thead>
      <tbody>
      <tr>
        <td>June 9th</td>
        <td>Portland, <abbr title="Oregon">OR</abbr></td>
        <td>Crystal Ballroom</td>
      </tr>
      <tr>
        <td>June 10th</td>
        <td>Seattle, <abbr title="Washington">WA</abbr></td>
        <td>Crocodile Cafe</td>
      </tr>
      <tr>
        <td>June 12th</td>
        <td>Sacramento, <abbr title="California">CA</abbr></td>
        <td>Torch Club</td>
      </tr>
      <tr>
        <td>June 17th</td>
        <td>Austin, <abbr title="Texas">TX</abbr></td>
        <td>Speakeasy</td>
      </tr>
      </tbody>
    </table>
  </article>
  <script src="scripts/global.js"></script></body></html>

contact.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters: Contact the band</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css" /></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article><h1>Contact the band</h1><form method="post" action="submit.html">
  <fieldset>
    <p>
     <label for="name">Name:</label>
     <input type="text" id="name" name="name" placeholder="Your name" required />
    </p>
    <p>
     <label for="email">Email:</label>
     <input type="email" id="email" name="email" placeholder="Your email address" required />
    </p>
    <p>
     <label for="message">Message:</label>
     <textarea cols="45" rows="7" id="message" name="message" placeholder="Write your message here."  required ></textarea>
    </p>
    <input type="submit" value="Send" />
   </fieldset></form>
  </article><script src="scripts/global.js"></script></body></html>

submit.html

<!DOCTYPE html><html lang="en"><head>
  <meta charset="utf-8" />
  <title>Jay Skript And The Domsters: Contact the band</title>
  <script src="scripts/modernizr.js"></script>
  <link rel="stylesheet" media="screen" href="styles/basic.css" /></head><body>
  <header>
    <img src="images/logo.gif" alt="Jay Skript and the Domsters" />
    <nav>
      <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li><a href="photos.html">Photos</a></li>
        <li><a href="live.html">Live</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </header>
  <article>
    <h1>Thanks!</h1>
    <p>Thanks for contacting us. We'll get back to you as soon as we can.</p>
  </article>
  <script src="scripts/global.js"></script></body></html>

g

        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 ){
            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);
}//Aboutfunction 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';
        }
    }
}//photosfunction 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;
}//livefunction 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];
                }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);
}







addLoadEvent(highlightPage);
addLoadEvent(prepareSlideshow);
addLoadEvent(prepareShowSection);
addLoadEvent(preparePlaceholder);
addLoadEvent(prepareGallery);
addLoadEvent(stripeTables);
addLoadEvent(highlightRows);
addLoadEvent(displayAbbreviations);
addLoadEvent(focusLabels);
addLoadEvent(prepareForms);

 

原文链接:http://www.cnblogs.com/positive/p/3715396.html

本文转自  小旭依然  51CTO博客,原文链接:http://blog.51cto.com/xuyran/1784217

相关文章
N..
|
JavaScript 前端开发 UED
DOM编程中的form对象
DOM编程中的form对象
N..
268 0
N..
|
XML JavaScript 数据格式
DOM编程中的Document对象
DOM编程中的Document对象
N..
324 0
|
JavaScript 前端开发
DOM编程进阶(JS)
本篇是DOM编程基础(JS)的进阶版
|
XML 移动开发 JavaScript
DOM编程基础
DOM编程基础
320 0
|
JavaScript
DOM编程2-重要案例!!!
DOM编程2-重要案例!!!
215 0
|
JavaScript 前端开发 API
DOM编程:Document Object Model
DOM编程:Document Object Model
242 0
|
存储 JavaScript 前端开发
JavaScript函数和BOM及DOM编程(详细总结-无尿点)(一)
JavaScript函数和BOM及DOM编程(详细总结-无尿点)(一)
271 0
|
XML JavaScript 前端开发
JavaScript函数和BOM及DOM编程(详细总结-无尿点)(二)
JavaScript函数和BOM及DOM编程(详细总结-无尿点)(二)
263 0
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 提供编程接口,通过属性和方法操作XML结构。使用JavaScript等语言,可访问和修改节点。属性如nodeName、nodeValue揭示节点信息,方法如getElementsByTagName、appendChild、removeChild实现查找、添加和删除节点功能。节点对象x的应用示例贯穿其中。
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章