WebBasic07-JS


onmouseover是鼠標懸停事件
onmouseout是鼠標離開事件
onchange:值改變時觸發事件

document(window對象中一個重要的對象)
DOM節點樹
這裏寫圖片描述

  1. DOM:文檔對象模型,DOM節點樹,DOM操作
  2. 讀取,修改
    1)節點信息
    *節點名稱: nodeName
    *節點類型: nodeType
    2)元素節點的內容
    *innerText:設置或獲取位於對象起始和結束標籤內的文本
    *innerHTML:設置或獲取位於對象起始和結束標籤內的HTML
    3)節點屬性
    *getAttribute();根據屬性名獲取屬性的值
    *setAttribute(); 根據屬性名修改屬性值
    *removeAttribute();根據屬性名刪除屬性
    *簡單版獲取節點屬性:語法 節點.屬性 其中特殊的是 節點.className
  3. 查詢
    1)根據id查詢: document.getElementById(“id名”);
    2)根據標籤名稱查詢:
    *document.getElementsByTagName(標籤名);在此文檔下查詢所有滿足這個標籤名的節點
    *父親.getElementsByTagName(標籤名);在父親下查詢所有滿足這個標籤名的節點
    3)根據name屬性查詢: document.getElementsByName(“name名”);通常用來獲取表單控件
    4)根據class屬性查詢: document.getElementsByClassName(“class名”)
    5)根據層次(節點關係)查詢:
    *查父親: parentNode
    *查孩子:childNodes //也會查到換行或者空格 children //不帶空格或者換行(新瀏覽器支持)
    *查哥哥:previousElementSibling
    *查弟弟:nextElementSibling
    *查任意的兄弟:節點.父親.孩子[n] parentNode.children[3]
  4. 增加
    1)創建新節點: document.createElement(elementName);
    *返回新創建的節點
    *elementName:要創建的元素標籤名稱
    *新節點. innerHTML/innerText 往新節點中寫入內容
    2)添加新節點:
    *父節點.appendChild(新子節點):新節點作爲父節點的最後一個元素添加
    *父節點.insertBefore(新子節點,舊子節點):新節點插入進舊子節點之前
  5. 刪除
    1)父節點刪子節點: 父節點.removeChild(子節點)
    2)自己刪自己:子節點.parentNode.removeChild(子節點)
    3)節點.remove();刪除本身(新瀏覽器支持)

小練習

簡單購物車

<!DOCTYPE html>
<html>
  <head>
    <title>購物車</title>
    <meta charset="utf-8" />
    <style type="text/css">
      h1 {
        text-align:center;
      }
      table {
        margin:0 auto;
        width:60%;
        border:2px solid #aaa;
        border-collapse:collapse;
      }
      table th, table td {
        border:2px solid #aaa;
        padding:5px;
      }
      th {
        background-color:#eee;
      }
    </style>
    <script>
        //加入購物車
        //調用此函數時傳入了this(按鈕對象即DOM節點)
        //arguments[0]->this或者是聲明參數來接收this的值
        //注意:參數名不能是關鍵字this
        function add_shoppingcart(btn){
            //利用父子關係導航到tr節點
            var tr=btn.parentNode.parentNode;
            //找到tr節點中的全部td子元素
            var tds=tr.getElementsByTagName("td"); //tds=tr.children;->此方法只有最新的瀏覽器支持
            //獲取商品名及價格
            var name=tds[0].innerHTML;
            var price=parseFloat(tds[1].innerHTML);
            //爲購物車創建新的商品行
            var newTr=document.createElement("tr");
            newTr.innerHTML="<td>"+name+"</td>"+"<td>"+price+"</td>"+
                            "<td align='center'>"+
                                "<input type='button' value='-' onclick='cut(this);'/> "+
                                "<input type='text' size='2' readonly value='1'/> "+
                                "<input type='button' value='+' onclick='add(this);'/> "+
                            "</td>"+"<td>80</td>"+
                            "<td align='center'>"+
                                "<input type='button' value='x' onclick='del(this);'/>"
                            "</td>";
            //找到tbody節點
            var tbody=document.getElementById("goods");
            //追加元素
            tbody.appendChild(newTr);
            //計算並且更新購物車全部商品的金額和總計
            sum();
        }
        /*
         *聲明一個計算總計的算法
         */
         function sum(){
            //計算每件商品的總金額,更新金額列
            var tbody=document.getElementById("goods")
            //獲取所有行
            var trs=tbody.getElementsByTagName("tr");
            var sum=0;
            //遍歷每一行
            for(var i=0;i<trs.length;i++){
                //獲取所有列
                var tr=trs[i];
                var tds=tr.getElementsByTagName("td");
                //獲取單價
                var price=parseFloat(tds[1].innerHTML);
                //獲取數量
                var qty=parseFloat(tds[2].getElementsByTagName("input")[1].value);
                //計算每件商品總金額
                n=price*qty;
                sum+=n;
                tds[3].innerHTML=n;
            }
            //計算所有商品的總計,更新總計列
            var total=document.getElementById("total");
            total.innerHTML=sum;            
        }
        /*
         *刪除按鈕的方法
         */
        function del(btn){
            var tr=btn.parentNode.parentNode;
            //console.log(tr);
            var tbody=tr.parentNode;
            //console.log(tbody); 
            tbody.removeChild(tr);
            sum();
        }
        /*
         *+號按鈕的方法
         */
         function add(btn){
            //找到td及其所有的孩子
            var td=btn.parentNode;
            var inputs=td.getElementsByTagName("input");
            //獲取數量
            var qty=parseInt(inputs[1].value);
            //給數量+1
            qty++;
            //寫入新數量
            inputs[1].value=qty;
            //重新計算
            sum();
         }
        /*
         *-號按鈕的方法
         */
         function cut(btn){
            var td=btn.parentNode;
            var inputs=td.getElementsByTagName("input");
            var qty=parseInt(inputs[1].value);
            qty--;
            if(qty<=0){return;}
            inputs[1].value=qty;
            sum();
        }
    </script>
  </head>
  <body>
    <h1>真划算</h1>
    <table>
      <tr>
        <th>商品</th>
        <th>單價(元)</th>
        <th>顏色</th>
        <th>庫存</th>
        <th>好評率</th>
        <th>操作</th>
      </tr>   
      <tr>
        <td>羅技M185鼠標</td>
        <td>80</td>
        <td>黑色</td>
        <td>893</td>
        <td>98%</td>
        <td align="center">
          <input type="button" value="加入購物車" onclick="add_shoppingcart(this);"/>
        </td>
      </tr>
      <tr>
        <td>微軟X470鍵盤</td>
        <td>150</td>
        <td>黑色</td>
        <td>9028</td>
        <td>96%</td>
        <td align="center">
          <input type="button" value="加入購物車" onclick="add_shoppingcart(this);"/>
        </td>
      </tr>
      <tr>
        <td>洛克iphone6手機殼</td>
        <td>60</td>
        <td>透明</td>
        <td>672</td>
        <td>99%</td>
        <td align="center">
          <input type="button" value="加入購物車" onclick="add_shoppingcart(this);"/>
        </td>
      </tr>
      <tr>
        <td>藍牙耳機</td>
        <td>100</td>
        <td>藍色</td>
        <td>8937</td>
        <td>95%</td>
        <td align="center">
          <input type="button" value="加入購物車" onclick="add_shoppingcart(this);"/>
        </td>
      </tr>
      <tr>
        <td>金士頓U盤</td>
        <td>70</td>
        <td>紅色</td>
        <td>482</td>
        <td>100%</td>
        <td align="center">
          <input type="button" value="加入購物車" onclick="add_shoppingcart(this);"/>
        </td>
      </tr>
    </table>

    <h1>購物車</h1>
    <table>
      <thead>
        <tr>
          <th>商品</th>
          <th>單價(元)</th>
          <th>數量</th>
          <th>金額(元)</th>
          <th>刪除</th>
        </tr>
      </thead>
      <tbody id="goods">
        <!-- 插入新tr元素 -->

      </tbody>
      <tfoot>
        <tr>
          <td colspan="3" align="right">總計</td>
          <td id="total"></td>
          <td></td>
        </tr>
      </tfoot>
    </table>    
  </body>
</html>

效果圖
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章