敲點JavaScript代碼

來源:互聯網
上載者:User

標籤:

1. DOM DEMO-表格的行排序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>DEMO~DEMO</title><style type="text/css">    </style></head><body>    <table id="tab" border=1>        <thead>            <tr>                <th>Name</th>                <th>Age</th>            </tr>        </thead>        <tbody>            <tr><td>111</td><td>1</td></tr>            <tr><td>888</td><td>7</td></tr>            <tr><td>333</td><td>3</td></tr>            <tr><td>555</td><td>6</td></tr>        </tbody>    </table>    <script type="text/javascript">    /*     * 根據指定表格每行第n的儲存格的值,對第一個<tbody>中的行排序,     * 如果存在comparator函數則使用它,否則按字母表順序比較。     */    function sortrows(table, n, comparator){        var tbodys = table.tBodies[0];        var rows = tbodys.getElementsByTagName("tr"); //tbody中的所有行        rows = Array.prototype.slice.call(rows, 0); //真實數組中的快照                rows.sort(function(row1, row2){            var ceil1 = row1.getElementsByTagName("td")[n]; //獲得第n個儲存格            var ceil2 = row2.getElementsByTagName("td")[n];             var val1 = ceil1.textNode || ceil1.innerText; //獲得常值內容                        var val2 = ceil2.textNode || ceil2.innerText; //比較            if(comparator)                 return comparator(val1, val2);            if(val1 < val2) return -1;            else if(val1 > val2) return 1;            else return 0;        });        //在tbody中按它們的順序進行添加        for(var i=0; i<rows.length; i++)            tbodys.appendChild(rows[i]);    }    /*     * 尋找表格的<th>元素,讓它們可點擊,以便點擊欄位標題,按該列對行排序    */    function makeSortable(table){        var headers = table.getElementsByTagName("th");        for(var i=0; i<headers.length; i++){            (function(n){                headers[i].onclick = function(){                    sortrows(table, n);                                    };            }(i));        }    }        var tab = document.getElementById("tab");    makeSortable(tab);    </script></body></html>
View Code

 2. 產生子目錄

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>DEMO~DEMO</title><style type="text/css">    #TOC {border:solid black 1px; margin:10px; padding:10px}    .TOCEntry {font-family:sans-serif;}    .TOCEntry a {text-decoration:none;}    .TOCLevel1 {font-size:16px; font-weight:bold;}    .TOCLevel2 {font-size:12px; margin-left:.5in;}    .TOCSectNum:after {content: ":";} /*表示每個段編號之後都有一個冒號和空格符。*/    .TOCSectNum {display:none;}</style></head><body>    <div id="TOC">            </div>    <h1>h1</h1>    <h2>h2</h2>    <h3>h3</h3>    <h4>h4</h4>    <h5>h5</h5>    <h6>h6</h6>    <script type="text/javascript">        (function(){            //尋找TOC元素,如果不存在,則在文檔中建立一個            var toc = document.getElementById("TOC");            if(!toc){                toc = document.createElement("div");                toc.id = "TOC";                document.body.insertBefore(toc,document.body.firstChild);            }            //尋找所有的標題元素            var headings;            if(document.querySelectAll){                document.querySelectAll("h1,h2,h3,h4,h5,h6");            } else {                headings = findHeadings(document.body, []);            }                        //遞迴遍曆document.body,尋找標題元素            function findHeadings(root, sects){                for(var c=root.firstChild; c!=null; c=c.nextSibling){                    if(c.nodeType !== 1) continue;                    if(c.tagName.length == 2 && c.tagName.charAt(0) == "H"){                        sects.push(c);                    } else {                        findHeadings(c,sects);                    }                }                return sects;            }                        //初始化一個數組來保持跟蹤章節號            var sectionNumbers = [0,0,0,0,0,0];                        //迴圈已找到的標題元素            for(var h=0; h<headings.length; h++){                var heading = headings[h];                //跳過在TOC容器中的標題元素                if(heading.parentNode == toc) continue;                                //判斷標題層級                var level = parseInt(heading.tagName.charAt(1));                if(isNaN(level) || level<1 || level>6) continue;                                //對於該標題層級增加sectionNumbers對應的數字,重設所以標題比它層級低的數字為零                sectionNumbers[level-1]++;                for(var i=level; i<6; i++)                    sectionNumbers[i] = 0;                                //將所有標題層級的章節組合產生一個章節號,如2.3.1                var sectionNumber = sectionNumbers.slice(0,level).join(".");                                //為標題層級增加章節號,把數組放在<span>中,使其可以用樣式修飾                var span = document.createElement("span");                span.className = "TOCSectNum";                span.innerHTML = sectionNumber;                heading.insertBefore(span, heading.firstChild);                                //用命名的錨點將標題包起來,以便為它增加連結                var anchor = document.createElement("a");                anchor.name = "TOC"+sectionNumber;                heading.parentNode.insertBefore(anchor,heading);                anchor.appendChild(heading);                                //現在為該節點建立一個連結                var link = document.createElement("a");                link.href = "#TOC" + sectionNumber; //連結的目標地址                link.innerHTML = heading.innerHTML;                                 //將連結地址放在一個div中,div用基於層級名字的樣式修飾                var entry = document.createElement("div");                entry.className = "TOCEntry TOCLevel"+level;                entry.appendChild(link);                                toc.appendChild(entry);            }        }());            </script></body></html>
View Code

 

敲點JavaScript代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.