JavaScript學習系列2 DOM

 DOM = document + object+model


<!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>Shopping List</title>
          <!-- 樣式表 -->
          <style>
               p {
                    color: yellow;
                    font-family: "arial", sans-serif;
                    font-size:1.2em;
               }
               body {
                    color:white;
                    background-color:black;
               }
               .special {
                    font-style:italic;
               }
               h2.special {
                    text-transform:uppercase;
               }
               #purchases {
                    border:1px solid white;
                    background-color:#333;
                    color:#ccc;
                    padding:1em;
               }
               #purchases li {
                    font-weight:bold;
               }
          </style>

     </head>
     <body>
          <h1>what to buy</h1>
        <h2 class="special">This is uppercase</h2>
          <p title="a gentle reminder">Don't forget to buy this stuff.</p>
          <ul id="purchases">
               <li>A tin of beans</li>
              <li class="special">Cheese</li>
              <li >Milk</li>
          </ul>
          <!-- Mark-up goes here -->
          <script src="file.js"></script>
     </body>
</html>


JavaScript
<!-- alert(typeof document.getElementById("purchases"));
<!-- alert(document.getElementsByTagName("*").length);
alert(document.getElementsByClassName("special").length);
var shopping = document.getElementById("purchases");
alert(shopping.getElementsByTagName("*").length);

function add(num1,num2) {
     var total = num1*num2;
     alert(3 == "3");
}

HTML 5 DOM中新增了一個令人期待已久的方法:getElementsByClassName。這方法讓我們能夠Class屬性中的類名來訪問元素。但是這個方法比較新,只有較新的瀏覽器才支持他。
因此我們可以 寫一個方法來實現這個功能。
function getElementByClassName(node, classname) {
     if(node.getElementsByClassName) {
          return node.getElementsByClassName(classname);
     } else {
          var results = new Array();
          var elems = node.getElementsByTagName("*");
          for(var i=0; i<elems.length; i++) {
               if(elems[i].className.indexOf(classname) != -1) {
                    results[results.length] = elems[i];
               }  
          }
          return results;
     }
}

var shopping = document.getElementById("purchases");
alert(shopping.getAttribute("title"));
shopping.setAttribute("title", "a list of goods");
alert(shopping.getAttribute("title"));

setAttribute:先創建屬性,然後設置他的值

這裏有個非常值得關注的細節:通過setAttribute對文檔做出修改後,在通過瀏覽器view source選項去查看文檔的源代碼時看到的仍將是改變前的屬性值,
也就是說setAttribute做出的修改不會反映在文檔本身的源代碼裏。這種”表裏不一“的現象源自DOM的工作模式:先加載文檔的靜態內容,再動態刷新,動態刷新
不會影響文檔的靜態內容。這正是DOM的真正威力:對頁面內容進行刷新卻不需要再瀏覽器裏刷新頁面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章