用JS實現刪除買家信息(阿里巴巴模擬筆試)

利用面向對象思想完成買家信息刪除功能,每一條買家信息包含javascript

姓名(name) 
性別(sex) 
電話號碼(number) 
省份(province)html

 

實現如下要求java

不能借用任何第三方庫,須要使用原生代碼實現。 
結合給出的基本代碼結構,在下方2處code here補充代碼,完成買家信息的刪除功能,注意此頁面要在手機上清晰顯示。 
js代碼能夠任意調整,例如和使用es6代碼完成。node

 

完成下列代碼:es6

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--code here-->
    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <title>demo</title>
    <style>
        body,div,ul,li{ padding: 0; margin: 0;}
        .head, li div { display: inline-block; width: 70px; text-align: center; }
        li .id, li .sex, .id, .sex { width: 15px; }
        li .name, .name { width: 40px; }
        li .tel, .tel { width: 90px; }
        li .del, .del { width: 15px; }
        ul { list-style: none; }
        .user-delete { cursor: pointer; }
    </style>
</head>
<body>
<div id="J_container">
    <div class="record-head">
        <div class="head id">序號</div>
        <div class="head name">姓名</div>
        <div class="head sex">性別</div>
        <div class="head tel">電話號碼</div>
        <div class="head province">省份</div>
        <div class="head">操做</div>
    </div>
    <ul id="J_List">
        <li>
            <div class="id">1</div>
            <div class="name">張三</div>
            <div class="sex">男</div>
            <div class="tel">13788888888</div>
            <div class="province">浙江</div>
            <div class="user-delete">刪除</div>
        </li>
        <li>
            <div class="id">2</div>
            <div class="name">李四</div>
            <div class="sex">女</div>
            <div class="tel">13788887777</div>
            <div class="province">四川</div>
            <div class="user-delete">刪除</div>
        </li>
        <li>
            <div class="id">3</div>
            <div class="name">王二</div>
            <div class="sex">男</div>
            <div class="tel">13788889999</div>
            <div class="province">廣東</div>
            <div class="user-delete">刪除</div>
        </li>
    </ul>
    <script>
        // 此處也可換成ES6的寫法
        function Contact(){
            this.init();
        }
        // your code here
        Contact.prototype.init=function(){
            var userDelete=document.getElementsByClassName("user-delete");
            var oUl=document.getElementById("J_List");
            var oLi=oUl.getElementsByTagName("li");
            for(var i= 0;i<userDelete.length;i++) {
                (function(num) {
                    userDelete[num].onclick = function () {
                       oLi[num].parentNode.removeChild(oLi[num]);
                    }
                })(i);
            }
        };
        var contact1=new Contact();
    </script>
</div>
</body>
</html>

 

填寫代碼處一:瀏覽器

這裏使用meta標籤的viewport來實現移動端頁面自適應,理論上講使用這個標籤是能夠適應全部尺寸的屏幕的,可是各設備對該標籤的解釋方式及支持程度不一樣形成了不能兼容全部瀏覽器或系統。viewport 是用戶網頁的可視區域。翻譯爲中文能夠叫作"視區"。手機瀏覽器是把頁面放在一個虛擬的"窗口"(viewport)中,一般這個虛擬的"窗口"(viewport)比屏幕寬,這樣就不用把每一個網頁擠到很小的窗口中(這樣會破壞沒有針對手機瀏覽器優化的網頁的佈局),用戶能夠經過平移和縮放來看網頁的不一樣部分。閉包

viewport標籤極其屬性:函數

這是實現頁面自適應的廣泛方法,其餘方法可見https://yusi123.com/2539.html佈局

 

填寫代碼處二:優化

思路:先獲取class爲user-delete的全部div以及id爲J_List的ul下的li,而後利用循環爲每個user-delete加上onclick事件,當點擊時刪除其父元素li。

1.在Javascript中,只提供了一種刪除節點的方法:removeChild()。

removeChild() 方法指定元素的某個指定的子節點。

語法:

node.removeChild(node)

node 必需。但願刪除的節點對象。

雖然removeChild()本來的做用使用來刪除子節點,可是也可用來刪除當前節點,例:
<div id="demo">
  <div id="thisNode">點擊刪除我</div>
</div>
<script type="text/javascript">
document.getElementById("thisNode").onclick=function(){
  this.parentNode.removeChild(this);
}
</script>

 

2.在遍歷每個user-delete時,使用的是函數表達式加閉包的方法。在函數聲明外加上圓括號可轉化爲函數表達式,函數表達式後面加一對圓括號就能夠調用函數,即

function(){
      //這裏是塊級做用域
})();

利用這種方式也能夠用來模仿塊級做用域(私有做用域),使其中的變量私有化。

for(var i= 0;i<userDelete.length;i++) {
                (function(num) {
                    userDelete[num].onclick = function () {
                       oLi[num].parentNode.removeChild(oLi[num]);
                    }
                })(i);
}

這裏將外部做用域的變量i做爲參數傳給內部第一個匿名函數,這個匿名函數有一個參數num,當每個i傳入時,都會將當前值複製給num。當發生點擊事件的時候,會觸發第二個匿名函數,這個包含num的閉包可訪問上一級做用域中的num的值,也就是當前的i值。

相關文章
相關標籤/搜索