Day008 - js應(yīng)用(2018-11-13)

一、動(dòng)態(tài)添加和刪除元素

  • ~兄弟選擇器
    +相鄰兄弟選擇器
  • a標(biāo)簽有默認(rèn)的跳轉(zhuǎn)頁(yè)面的行為,有兩種方法可以阻止它的默認(rèn)行為
    1- href設(shè)置為javascript:void(0) --(什么都不做) 功能性鏈接
    2- preventDefault()阻止事件的默認(rèn)行為,低版本IE不適用evt.preventDefault();
  • document.createElement()創(chuàng)建新元素(標(biāo)簽)
  • 在父類標(biāo)簽下面追加子類標(biāo)簽ul.appendChild(li);
    insertBefore()第一個(gè)參數(shù)是需要添加的參數(shù),第二個(gè)參數(shù)是需要在誰(shuí)的前面插入添加
    如果是lastChild,并且ul里面炕贵,li標(biāo)簽后面有回車,回車是最后一個(gè)節(jié)點(diǎn)(文本節(jié)點(diǎn))
  • trim()去掉字符串左右兩邊的空白
  • input.focus()讓文本框獲得焦點(diǎn),光標(biāo)會(huì)在文本框上閃爍
  • removeChild():在父節(jié)點(diǎn)中刪除子節(jié)點(diǎn)
  • 鍵盤事件(keydown:按下按鍵蚕脏,keypress: 某個(gè)鍵盤按鍵被按下并松開(kāi), keyup:按鍵彈起)
  • evt.keyCode或者evt.which返回onkeypress事件觸發(fā)的鍵的值的字符代碼,或者 onkeydown 或 onkeyup 事件的鍵的代碼竹挡。
  • a標(biāo)簽的href屬性置空可以出現(xiàn)手指圖表
  • 查CSS在瀏覽器中預(yù)覽效果
<!-- 查CSS在瀏覽器中預(yù)覽效果 -->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            #container {
                margin: 20px 50px;
            }
            #fruits li {
                list-style: none;
                width: 200px;
                height: 50px;
                font-size: 20px;
                line-height: 50px;
                background-color: cadetblue;
                color: white;
                text-align: center;
                margin: 2px 0;
            }
            #fruits>li>a {
                float: right;
                text-decoration: none;
                color: white;
                position: relative;
                right: 5px;
            }
            /* ~兄弟選擇器
             +相鄰兄弟選擇器*/
            #fruits~input {
                border: none;
                outline: none;
                font-size: 18px;
            }
            #fruits~input[type=text] {
                border-bottom: 1px solid darkgray;
                width: 200px;
                height: 50px;
                text-align: center;
            }
            #fruits~input[type=button] {
                width: 80px;
                height: 30px;
                background-color: coral;
                color: white;
                vertical-align: bottom;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <ul id="fruits">
                <!-- a標(biāo)簽有默認(rèn)的跳轉(zhuǎn)頁(yè)面的行為,有兩種方法可以阻止它的默認(rèn)行為 -->
                <!-- 1.href設(shè)置為javascript:void(0)  --(什么都不做) 功能性鏈接-->
                <!-- <li>蘋果<a href="javascript:void(0)">×</a></li>
                <li>香蕉<a href="javascript:void(0)">×</a></li>
                <li>火龍果<a href="javascript:void(0)">×</a></li>
                <li>西瓜<a href="javascript:void(0)">×</a></li> -->
                <li>蘋果<a href="">×</a></li>
                <li>香蕉<a href="">×</a></li>
                <li>火龍果<a href="">×</a></li>
                <li>西瓜<a href="">×</a></li>
            </ul>
            <input type="text" name="fruit">
            <input id="ok" type="button" value="確定">
        </div>
        <script type="text/javascript">
            var input = document.querySelector('#container input[type=text]');
            var ul = document.getElementById('fruits');
            
            // 根據(jù)文本框輸入的內(nèi)容添加li標(biāo)簽和a標(biāo)簽
            function addItem(){
                
                // trim()去掉字符串左右兩邊的空白
                var fruitName = input.value.trim();
                if (fruitName.length > 0){
                    
                    // document.createElement()創(chuàng)建新元素(標(biāo)簽)
                    var li = document.createElement('li');
                    li.textContent = fruitName;
                    
                    // 在父類標(biāo)簽下面追加子類標(biāo)簽
                    // ul.appendChild(li);
                    
                    // insertBefore()第一個(gè)參數(shù)是需要添加的參數(shù),第二個(gè)參數(shù)是需要在誰(shuí)的前面插入添加
                    // 如果是lastChild,并且ul里面奖蔓,li標(biāo)簽后面有回車,回車是最后一個(gè)節(jié)點(diǎn)(文本節(jié)點(diǎn))
                    ul.insertBefore(li, ul.firstChild);
                    
                    // 創(chuàng)建a標(biāo)簽
                    var a = document.createElement('a');
                    // a標(biāo)簽的href屬性置空可以出現(xiàn)手指圖表
                    a.href='';
                    a.textContent = 'x';
                    // 在li標(biāo)簽下面追加a標(biāo)簽
                    li.appendChild(a);
                    // 給a標(biāo)簽的點(diǎn)擊事件綁定刪除操作
                    a.addEventListener('click', removeItem)
                    
                }
                // 清空文本框
                input.value = '';
                // 讓文本框獲得焦點(diǎn),光標(biāo)會(huì)在文本框上閃爍
                input.focus();
            }
            
            /*定義一個(gè)刪除li標(biāo)簽的函數(shù)*/
            function removeItem(evt){
                // preventDefault()阻止事件的默認(rèn)行為,低版本IE不適用
                evt.preventDefault();
                var a = evt.target || evt.srcElement;
                var li = a.parentNode;
                
                // removeChild():在父節(jié)點(diǎn)中刪除子節(jié)點(diǎn);
                li.parentNode.removeChild(li);
            }
            
            
            // 后代選擇器
            var anchors = document.querySelectorAll('#fruits a');
            // document.querySelectorAll('#fruits>li>a')
            
            // 循環(huán)給a標(biāo)簽綁定'click'事件
            for (var i = 0; i < anchors.length; i += 1){
                anchors[i].addEventListener('click', removeItem)
            }
            
            
            /*定義按下回車鍵和okButton效果等同,添加元素 的函數(shù)*/
            // 鍵盤事件(keydown:按下按鍵讹堤,keypress:  某個(gè)鍵盤按鍵被按下并松開(kāi), keyup:按鍵彈起)
            input.addEventListener('keypress', function (evt){
                // evt.keyCode或者evt.which返回onkeypress事件觸發(fā)的鍵的值的字符代碼吆鹤,或者 onkeydown 或 onkeyup 事件的鍵的代碼。
                var key = evt.keyCode || evt.which;
                if (key == 13){
                    addItem()
                }
            })
            
            
            var okButton = document.getElementById('ok');
            okButton.addEventListener('click', addItem)
        </script>
        
    </body>
</html>

二洲守、表格效果

  • 直接調(diào)用匿名函數(shù)
    方法一: (function (a, b){})(a, b);
    方法二: +function (a, b){}(a, b);
    可以采用此方法減少全局變量的使用
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #data {
                border-collapse: collapse;
            }
            #data td, #data th {
                width: 120px;
                height: 40px;
                text-align: center;
                border: 1px solid black;
            }
            #buttons {
                margin: 10px 0;
            }
        </style>
    </head>
    <body>
        <table id="data">
            <caption>數(shù)據(jù)統(tǒng)計(jì)表</caption>
            <tbody>
            <tr>
                <th>姓名</th>
                <th>年齡</th>
                <th>性別</th>
                <th>身高</th>
                <th>體重</th>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            <tr>
                <td>Item1</td>
                <td>Item2</td>
                <td>Item3</td>
                <td>Item4</td>
                <td>Item5</td>
            </tr>
            </tbody>
        </table>
        <div id="buttons">
            <button id="pretty">隔行換色</button>
            <button id="clear">清除數(shù)據(jù)</button>
            <button id="remove">刪單元格</button>
            <button id="hide">隱藏表格</button>
        </div>
        <script src="js/mylib.js"></script>
        <script>
            function prettify() {
                var trs = document.querySelectorAll('#data tr');
                for (var i = 1; i < trs.length; i += 1) {
                    trs[i].style.backgroundColor = 
                        i % 2 == 0 ? 'lightgray' : 'lightsteelblue';
                }
            }
            
            function clear() {
                var tds = document.querySelectorAll('#data td');
                for (var i = 0; i < tds.length; i += 1) {
                    tds[i].textContent = '';
                }
            }
            
            function removeLastRow() {
                var table = document.getElementById('data');
                if (table.rows.length > 1) {
                    table.deleteRow(table.rows.length - 1);
                }
            }
            
            function hideTable() {
                var table = document.getElementById('data');
                table.style.visibility = 'hidden';
            }
            
            +function() {
                var prettyBtn = document.querySelector('#pretty');
                prettyBtn.addEventListener('click', prettify)
                var clearBtn = document.querySelector('#clear');
                clearBtn.addEventListener('click', clear);
                var removeBtn = document.querySelector('#remove');
                removeBtn.addEventListener('click', removeLastRow);
                var hideBtn = document.querySelector('#hide');
                hideBtn.addEventListener('click', hideTable);
            }();
        </script>
    </body>
</html>

三疑务、閃爍的方塊

  • className可以設(shè)置類名,與之前用類選擇器.small寫的CSS樣式綁定,class是關(guān)鍵字
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #container {
                width: 800px;
                height: 400px;
                margin: 10px auto;
                border: 1px solid black;
                overflow: hidden;
            }
            #buttons {
                width: 800px;
                margin: 10px auto;
                text-align: center;
            }
            #add, #fla {
                border: none;
                outline: none;
                width: 80px;
                height: 30px;
                background-color: red;
                color: white;
                font-size: 16px;
                cursor: pointer;
            }
            .small {
                width: 80px;
                height: 80px;
                float: left;
            }
        </style>
    </head>
    <body>
        <div id="container"></div>
        <div id="buttons">
            <button id="add">添加</button>
            <button id="fla">閃爍</button>
        </div>
        <script src="js/mylib.js"></script>
        <script>
            var bigDiv = document.querySelector('#container');
            var addButton = document.querySelector('#add');
            addButton.addEventListener('click', function() {
                var smallDiv = document.createElement('div');
                 smallDiv.className = 'small';
                // smallDiv.style.width = '80px';
                // smallDiv.style.height = '80px';
                // smallDiv.style.float = 'left';
                smallDiv.style.backgroundColor = randomColor();
                bigDiv.insertBefore(smallDiv, bigDiv.firstChild);
            });
            var flaButton = document.querySelector('#fla');
            var isFlashing = false;
            var timerId;
            flaButton.addEventListener('click', function(evt) {
                isFlashing = !isFlashing;
                if (isFlashing) {
                    timerId = window.setInterval(function() {
                        var divs = document.querySelectorAll('#container>div');
                        for (var i = 0; i < divs.length; i += 1) {
                            divs[i].style.backgroundColor = randomColor();
                        }
                    }, 200);
                    flaButton.textContent = '暫停';
                } else {
                    window.clearInterval(timerId);
                    flaButton.textContent = '閃爍';
                }
            });
        </script>
    </body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市梗醇,隨后出現(xiàn)的幾起案子知允,更是在濱河造成了極大的恐慌,老刑警劉巖叙谨,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件温鸽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡手负,警方通過(guò)查閱死者的電腦和手機(jī)涤垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竟终,“玉大人蝠猬,你說(shuō)我怎么就攤上這事⊥炒罚” “怎么了榆芦?”我有些...
    開(kāi)封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)喘鸟。 經(jīng)常有香客問(wèn)我匆绣,道長(zhǎng),這世上最難降的妖魔是什么迷守? 我笑而不...
    開(kāi)封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任犬绒,我火速辦了婚禮,結(jié)果婚禮上兑凿,老公的妹妹穿的比我還像新娘凯力。我一直安慰自己,他們只是感情好礼华,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布咐鹤。 她就那樣靜靜地躺著,像睡著了一般圣絮。 火紅的嫁衣襯著肌膚如雪祈惶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音捧请,去河邊找鬼凡涩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛疹蛉,可吹牛的內(nèi)容都是我干的活箕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼可款,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼育韩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闺鲸,我...
    開(kāi)封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筋讨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后摸恍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悉罕,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年误墓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛮粮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谜慌,死狀恐怖然想,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情欣范,我是刑警寧澤变泄,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站恼琼,受9級(jí)特大地震影響妨蛹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晴竞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一蛙卤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噩死,春花似錦颤难、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至垛耳,卻和暖如春栅屏,著一層夾襖步出監(jiān)牢的瞬間飘千,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工栈雳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留护奈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓甫恩,卻偏偏與公主長(zhǎng)得像逆济,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磺箕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一:認(rèn)識(shí)jquery jquery是javascript的類庫(kù),具有輕量級(jí)抛虫,完善的文檔松靡,豐富的插件支持,完善的Aj...
    xuguibin閱讀 1,713評(píng)論 1 7
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5建椰? 答:HTML5是最新的HTML標(biāo)準(zhǔn)雕欺。 注意:講述HT...
    kismetajun閱讀 27,486評(píng)論 1 45
  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說(shuō)明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,247評(píng)論 1 41
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件伞矩,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,493評(píng)論 1 11
  • 別人幫你那是情分狱杰,不幫你那是本分… “哎,點(diǎn)點(diǎn)厅须,你不覺(jué)得你有點(diǎn)兒傻嗎仿畸?看你平時(shí)幫他們那么多,你看你搬家時(shí)朗和,需要幫忙...
    煜靈兒閱讀 318評(píng)論 0 1