基礎(chǔ)JavaScript練習(xí)(一)

任務(wù)描述

  • 模擬一個(gè)隊(duì)列,隊(duì)列的每個(gè)元素是一個(gè)數(shù)字到腥,初始隊(duì)列為空
  • 有一個(gè)input輸入框雁比,以及4個(gè)操作按鈕
    1.點(diǎn)擊"左側(cè)入",將input中輸入的數(shù)字從左側(cè)插入隊(duì)列中;
    2.點(diǎn)擊"右側(cè)入"柿扣,將input中輸入的數(shù)字從右側(cè)插入隊(duì)列中肖方;
    3.點(diǎn)擊"左側(cè)出"闺魏,讀取并刪除隊(duì)列左側(cè)第一個(gè)元素未状,并彈窗顯示元素中數(shù)值;
    4.點(diǎn)擊"右側(cè)出"析桥,讀取并刪除隊(duì)列又側(cè)第一個(gè)元素司草,并彈窗顯示元素中數(shù)值;
  • 點(diǎn)擊隊(duì)列中任何一個(gè)元素泡仗,則該元素會被從隊(duì)列中刪除
  • 限制數(shù)字在1-100之間

效果圖

解決思路

從任務(wù)描述中可以看出本任務(wù)主要工作大致可以分為兩大塊:插入數(shù)據(jù)和刪除數(shù)據(jù)
因此我分為insert()插入方法和del()刪除方法,在insert()方法中對文本框中的數(shù)值根據(jù)任務(wù)要求進(jìn)行驗(yàn)證

整體代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>JS練習(xí)</title>
</head>
<style type="text/css">
    li{
        display: inline-block;
        width:auto;
        height: 40px;
        line-height: 40px;
        text-align: center;
        color: #fff;
        background-color: #cd4a48;
        margin-top: 10px;
        margin-left: 5px;
        padding: 0 5px;
    }
</style>
<body>
        <input id="text-box" type="text" value="">
        <input id="btn-left-to" type="button" value="左側(cè)入">
        <input id="btn-right-to" type="button" value="右側(cè)入">
        <input id="btn-left-out" type="button" value="左側(cè)出">
        <input id="btn-right-out" type="button" value="右側(cè)出">
        <ul id="content-box"></ul>
        <script>
                window.onload=function(){
                    var text_box=document.getElementById("text-box"),
                        btn_left_to=document.getElementById("btn-left-to"),
                        btn_right_to=document.getElementById("btn-right-to"),
                        btn_left_out=document.getElementById("btn-left-out"),
                        btn_right_out=document.getElementById("btn-right-out"),
                        content_box=document.getElementById("content-box");
                        //判斷埋虹,如果有值并且符合判斷條件,添加這條數(shù)據(jù)數(shù)據(jù)
                        function insert(dir){
                            var reg=/(^[1-9][0-9]$|^[0-9]$|^100$)/;
                            if(text_box.value==""){
                                alert("未輸入值");
                                text_box.focus();
                            }else if(isNaN(text_box.value)){
                                alert("您輸入的不是數(shù)字");
                                text_box.value="";
                                text_box.focus();
                            }else if(reg.test(text_box.value)){
                                var content_list=document.createElement("li");
                                content_list.innerHTML=text_box.value;
                                if (dir==="left") {
                                    content_box.insertBefore(content_list,content_box.childNodes[0]);
                                    text_box.value="";
                                }else if(dir==="right"){
                                    content_box.appendChild(content_list);
                                    text_box.value="";
                                }  
                            }else{
                                    alert("請輸入0-100之間的數(shù)字");
                                    text_box.value="";
                                    text_box.focus();
                            
                            }
                        }
                        //刪除數(shù)據(jù)
                        function del(dir){
                            if (content_box.childNodes.length<=0) {
                                alert("沒有可以刪除的元素");
                                return false;
                            }else if (dir==="left") {
                                alert("刪除數(shù)字:"+content_box.firstChild.innerText);
                                content_box.removeChild(content_box.firstChild);
                                text_box.value="";
                            }else if(dir==="right"){
                                alert("刪除數(shù)字:"+content_box.lastChild.innerText);
                                content_box.removeChild(content_box.lastChild);
                                text_box.value="";
                            }else{
                                content_box.removeChild(event.target);
                            }
                        }
                        btn_left_to.addEventListener("click", function(){insert("left")}, false);
                        btn_right_to.addEventListener("click", function(){insert("right")}, false);
                        btn_left_out.addEventListener("click", function(){del("left")}, false);
                        btn_right_out.addEventListener("click", function(){del("right")}, false);
                        content_box.addEventListener('click',function(e){
                        if(e.target.nodeName.toLowerCase() == 'li'){
                            content_box.removeChild(e.target);
                        }
                    });
                }
        </script>
</body>
</html>

對該任務(wù)出現(xiàn)的方法進(jìn)行總結(jié)

1.判斷值為數(shù)字類型的方法

可以使用 isNaN(val)來判斷value值是否為數(shù)字類型
NaN顧名思義:not a number

2.正則表達(dá)式的驗(yàn)證

test()方法執(zhí)行一個(gè)檢索娩怎,用來查看正則表達(dá)式與指定的字符串是否匹配搔课。返回true或false
regexObj.test(str)
str:用來與正則表達(dá)式匹配的字符串


3.子節(jié)點(diǎn)的插入

  • appendChild() 方法:可以向節(jié)點(diǎn)的子節(jié)點(diǎn)列表的末尾添加新的子節(jié)點(diǎn)。語法:element.appendChild(newChild)截亦;
  • insertBefore()方法:可以在已有子節(jié)點(diǎn)前插入一個(gè)新的子節(jié)點(diǎn)爬泥。語法:element.insertChild(newchild,refchild)

4.獲取元素子節(jié)點(diǎn)集合

childNodes 屬性返回節(jié)點(diǎn)的子節(jié)點(diǎn)集合。
語法:var nodeList = elementNodeReference .childNodes;
節(jié)點(diǎn)集合中的項(xiàng)目是對象而不是字符串崩瓤。
要從節(jié)點(diǎn)對象獲取數(shù)據(jù)袍啡,請使用其屬性(例如elementNodeReference.childNodes[1].nodeName獲取名稱等)。

5.獲取子節(jié)點(diǎn)

  • firstChild 獲取父節(jié)點(diǎn)node的第一層第一個(gè)子節(jié)點(diǎn)却桶,若不存在則返回null
    語法: var child = node.firstChild;
  • lastChild 返回被選節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)境输,如果選定的節(jié)點(diǎn)沒有子節(jié)點(diǎn),則該屬性返回NULL颖系。

6.事件監(jiān)聽器

**EventTarget.addEventListener() **方法將指定的監(jiān)聽器注冊到 EventTarget
上嗅剖,當(dāng)該對象觸發(fā)指定的事件時(shí),指定的回調(diào)函數(shù)就會被執(zhí)行嘁扼。

7.toLowerCase()

toLowerCase() 會將調(diào)用該方法的字符串值轉(zhuǎn)為小寫形式信粮,并返回。語法:str.toLowerCase()

在線學(xué)習(xí)參考資料

MDN Javascript

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末偷拔,一起剝皮案震驚了整個(gè)濱河市蒋院,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莲绰,老刑警劉巖欺旧,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛤签,居然都是意外死亡辞友,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來称龙,“玉大人留拾,你說我怎么就攤上這事■曜穑” “怎么了痴柔?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疫向。 經(jīng)常有香客問我咳蔚,道長,這世上最難降的妖魔是什么搔驼? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任谈火,我火速辦了婚禮,結(jié)果婚禮上舌涨,老公的妹妹穿的比我還像新娘糯耍。我一直安慰自己,他們只是感情好囊嘉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布温技。 她就那樣靜靜地躺著,像睡著了一般哗伯。 火紅的嫁衣襯著肌膚如雪荒揣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天焊刹,我揣著相機(jī)與錄音系任,去河邊找鬼。 笑死虐块,一個(gè)胖子當(dāng)著我的面吹牛俩滥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贺奠,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼霜旧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了儡率?” 一聲冷哼從身側(cè)響起挂据,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儿普,沒想到半個(gè)月后崎逃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眉孩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年个绍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勒葱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巴柿,死狀恐怖凛虽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情广恢,我是刑警寧澤凯旋,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站袁波,受9級特大地震影響瓦阐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篷牌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踏幻。 院中可真熱鬧枷颊,春花似錦、人聲如沸该面。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隔缀。三九已至题造,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猾瘸,已是汗流浹背界赔。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牵触,地道東北人淮悼。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像揽思,于是被迫代替她去往敵國和親袜腥。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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

  • 任務(wù)描述 如圖钉汗,模擬一個(gè)隊(duì)列羹令,隊(duì)列的每個(gè)元素是一個(gè)數(shù)字,初始隊(duì)列為空有一個(gè)input輸入框损痰,以及4個(gè)操作按鈕點(diǎn)擊"...
    海藻web開發(fā)閱讀 255評論 0 0
  • 一福侈、JS前言 (1)認(rèn)識JS 也許你已經(jīng)了解HTML標(biāo)記(也稱為結(jié)構(gòu)),知道了CSS樣式(也稱為表示)徐钠,會使用HT...
    凜0_0閱讀 2,752評論 0 8
  • 第1章 系好安全帶,準(zhǔn)備啟航 1.1讓你認(rèn)識JS 1.1.1 JavaScript能做什么癌刽?增強(qiáng)頁面動(dòng)態(tài)效果(...
    張中華閱讀 1,350評論 4 10
  • 個(gè)人博客:https://yeaseonzhang.github.io 花了半個(gè)多月的時(shí)間,終于又把“JS紅寶書”...
    Yeaseon閱讀 11,482評論 9 52
  • 富貴子 富貴子又稱朱砂根、紅涼傘显拜、百兩金衡奥,自然生長于山谷林下或丘陵陰蔽濕潤的灌木叢中。性喜陰涼远荠、濕潤的中性沙質(zhì)土壤...
    愛隨風(fēng)飄零閱讀 564評論 0 1