JavaScript的應(yīng)用二

JavaScript的應(yīng)用

一岖食、使用JS完成注冊(cè)頁面表單校驗(yàn)

1.需求分析

之前我們已經(jīng)使用彈出框的方式實(shí)現(xiàn)了表單校驗(yàn)的功能莹妒,但是此種方式用戶體驗(yàn)效果極差名船!
我們希望做成如下這種效果:

表單校驗(yàn).PNG

2.步驟分析

  • 第一步:確定事件(onfocus 聚焦事件)并為其綁定一個(gè)函數(shù)
  • 第二步: 書寫綁定函數(shù)(在輸入框的后面給出提示信息)
  • 第三步: 確定事件(onblur 離焦事件)并為其綁定一個(gè)函數(shù)
  • 第四步: 書寫函數(shù)(對(duì)數(shù)據(jù)進(jìn)行校驗(yàn), 分別給出提示)

3.代碼實(shí)現(xiàn)

Html 代碼:

<input type="text" name="user" size="34px" id="user"
onfocus="showTips('user',' 用戶名必填旨怠!')"
onblur="check('user',' 用戶名不能為空渠驼!')"/><span
id="userspan"></span>

JS 代碼:

<script>        
    function showTips(id,info){
        document.getElementById(id+"span").innerHTML="<font color='gray'>"+info+"</font>";
    }
            
    function check(id,info){
        //1.獲取用戶輸入的用戶名數(shù)據(jù)
        var uValue = document.getElementById(id).value;
        //2.進(jìn)行校驗(yàn)
        if(uValue==""){
            document.getElementById(id+"span").innerHTML="<font color='red'>"+info+"</font>";
        }else{
            document.getElementById(id+"span").innerHTML="";
        }
    }
</script>

二、使用JS完成表格的一個(gè)隔行換色

1.需求分析

我們希望在后臺(tái)頁面中實(shí)現(xiàn)一個(gè)隔行換色的效果顯示所有的用戶信息鉴腻,顯示效果如下:

隔行變色.png

2.技術(shù)分析

新標(biāo)簽的學(xué)習(xí)

<thead>
        <tr>
            <th></th>
        </tr>
</thead>
    <tbody>
        <tr>
            <td></td>
        </tr>
</tbody>

確定事件(頁面加載事件onload)
獲取元素:獲取表格(document.getElementById()),最終是為了獲取表格中tbody里面的行數(shù)(長(zhǎng)度)迷扇。
Tbody里面的行數(shù)(rows.length)
JS的遍歷(for循環(huán))
獲取奇數(shù)行和偶數(shù)行(對(duì)遍歷中角標(biāo)對(duì)2取余)
設(shè)置背景顏色(.style.backgroundColor)

3.步驟分析

  • 第一步:確定事件(onload)并為其綁定一個(gè)函數(shù)
  • 第二步:書寫函數(shù)(獲取表格)
  • 第三步:獲取tbody里面的行數(shù)
  • 第四步:對(duì)tbody里面的行進(jìn)行遍歷
  • 第五步:獲取奇數(shù)行和偶數(shù)行(角標(biāo)對(duì)2取余)
  • 第六步:分別對(duì)奇數(shù)行和偶數(shù)行設(shè)置背景顏色

4.代碼實(shí)現(xiàn)

JS代碼:

<script>
    window.onload = function(){
        //1.獲取表格
        var tblEle = document.getElementById("tbl");
        //2.獲取表格中tbody里面的行數(shù)(長(zhǎng)度)
        var len = tblEle.tBodies[0].rows.length;
        //alert(len);
        //3.對(duì)tbody里面的行進(jìn)行遍歷
        for(var i=0;i<len;i++){
            if(i%2==0){
                //4.對(duì)偶數(shù)行設(shè)置背景顏色
                tblEle.tBodies[0].rows[i].style.backgroundColor="pink";
            }else{
                //5.對(duì)奇數(shù)行設(shè)置背景顏色
                tblEle.tBodies[0].rows[i].style.backgroundColor="gold";
            }
        }
    }
</script>

html代碼:

給table里面添加一個(gè)id=“tbl”,在table里面添加新標(biāo)簽
<thead></thead>和<tbody></tbody>

三、使用JS完成表格的高亮顯示

分析:

  • 第一步:確定事件(onmouseover和onmouseout)并分別為其綁定一個(gè) 函數(shù)
  • 第二步:獲取鼠標(biāo)移上去的那行爽哎,對(duì)其設(shè)置背景顏色

JS代碼:

<script>
    function changeColor(id,flag){
        if(flag=="over"){
            document.getElementById(id).style.backgroundColor="red";
        }else if(flag=="out"){
            document.getElementById(id).style.backgroundColor="white";
        }
    }
</script>

html代碼:

<tr onmouseover="changeColor('tr1','over')" id="tr1" onmouseout="changeColor('tr1','out')">
        <td>1</td>
        <td>張三</td>
        <td>22</td>
</tr>

四蜓席、使用JS完成全選和全不選操作

1、需求分析

我們希望在后臺(tái)系統(tǒng)實(shí)現(xiàn)一個(gè)批量刪除的操作(全選所有的復(fù)選框)课锌,顯示效果如下:

全選全不全.png

2厨内、技術(shù)分析

確定事件(鼠標(biāo)單擊事件onclick),事件綁定到編號(hào)前面的復(fù)選框里面

獲取編號(hào)前面的復(fù)選框的狀態(tài)(是否選中)

獲取復(fù)選框:var checkAllEle = document.getElementById(“id”)
獲取復(fù)選框的狀態(tài):checkAllEle.checked?

獲取下面所有的復(fù)選框:

document.getElementsByName(“name”);

3产镐、步驟分析

  • 第一步:確定事件(onclick)并為其綁定一個(gè)函數(shù)
  • 第二步:書寫函數(shù)(獲取編號(hào)前面的復(fù)選框隘庄,獲取其狀態(tài))
  • 第三步:判斷編號(hào)前面復(fù)選框的狀態(tài)(如果為選中,獲取下面所有的復(fù)選框癣亚,并將其狀態(tài)置為選中)
  • 第四步:判斷編號(hào)前面復(fù)選框的狀態(tài)(如果為未選中丑掺,獲取下面所有的復(fù)選框,并將其狀態(tài)置為未選中)

4述雾、代碼實(shí)現(xiàn)

JS代碼:

<script>
    function checkAll(){
        //1.獲取編號(hào)前面的復(fù)選框
        var checkAllEle = document.getElementById("checkAll");
        //2.對(duì)編號(hào)前面復(fù)選框的狀態(tài)進(jìn)行判斷
        if(checkAllEle.checked==true){
            //3.獲取下面所有的復(fù)選框
            var checkOnes = document.getElementsByName("checkOne");
            //4.對(duì)獲取的所有復(fù)選框進(jìn)行遍歷
            for(var i=0;i<checkOnes.length;i++){
                //5.拿到每一個(gè)復(fù)選框街州,并將其狀態(tài)置為選中
                checkOnes[i].checked=true;
            }
        }else{
            //6.獲取下面所有的復(fù)選框
            var checkOnes = document.getElementsByName("checkOne");
            //7.對(duì)獲取的所有復(fù)選框進(jìn)行遍歷
            for(var i=0;i<checkOnes.length;i++){
                //8.拿到每一個(gè)復(fù)選框兼丰,并將其狀態(tài)置為未選中
                checkOnes[i].checked=false;
            }
        }
    }
</script>

HTMl代碼:

復(fù)選框前面的:

<th><input type="checkbox" onclick="checkAll()" id="checkAll"/></th>

下面所有的復(fù)選框:

<td><input type="checkbox" name="checkOne"/></td>

五、使用JS完成省市二級(jí)聯(lián)動(dòng)

1唆缴、需求分析

我們希望在注冊(cè)頁面中添加一個(gè)字段(籍貫)鳍征,當(dāng)用戶選擇一個(gè)具體的省份,在后面的下拉列表中動(dòng)態(tài)加載該省份下所有的城市面徽。顯示的效果如下:

省市聯(lián)動(dòng).png

2艳丛、技術(shù)分析

事件(onchange)
使用一個(gè)二維數(shù)組來存儲(chǔ)省份和城市(二維數(shù)組的創(chuàng)建)
獲取用戶選擇的省份(使用方法傳參的方式:this.value)
遍歷數(shù)組(獲取省份與用戶選擇的省份比較,如果相同了趟紊,繼續(xù)遍歷該省份下所有的城市)
創(chuàng)建文本節(jié)點(diǎn)和元素節(jié)點(diǎn)并進(jìn)行添加操作
createTextNode()
createElement()
appendChild()

3氮双、步驟分析

  • 第一步:確定事件(onchange)并為其綁定一個(gè)函數(shù)
  • 第二步:創(chuàng)建一個(gè)二維數(shù)組用于存儲(chǔ)省份和城市
  • 第三步:獲取用戶選擇的省份
  • 第四步:遍歷二維數(shù)組中的省份
  • 第五步:將遍歷的省份與用戶選擇的省份比較
  • 第六步:如果相同,遍歷該省份下所有的城市
  • 第七步:創(chuàng)建城市文本節(jié)點(diǎn)
  • 第八步:創(chuàng)建option元素節(jié)點(diǎn)
  • 第九步:將城市文本節(jié)點(diǎn)添加到option元素節(jié)點(diǎn)中去
  • 第十步:獲取第二個(gè)下拉列表霎匈,并將option元素節(jié)點(diǎn)添加進(jìn)去
  • 第十一步:每次操作前清空第二個(gè)下拉列表的option內(nèi)容戴差。

4、代碼實(shí)現(xiàn)

JS代碼:

<script>
    //1.創(chuàng)建一個(gè)二維數(shù)組用于存儲(chǔ)省份和城市
    var cities = new Array(3);
    cities[0] = new Array("武漢市","黃岡市","襄陽市","荊州市");
    cities[1] = new Array("長(zhǎng)沙市","郴州市","株洲市","岳陽市");
    cities[2] = new Array("石家莊市","邯鄲市","廊坊市","保定市");
    cities[3] = new Array("鄭州市","洛陽市","開封市","安陽市");
    
    function changeCity(val){
        
        //7.獲取第二個(gè)下拉列表
        var cityEle = document.getElementById("city");
        
        //9.清空第二個(gè)下拉列表的option內(nèi)容
        cityEle.options.length=0;
        
        //2.遍歷二維數(shù)組中的省份
        for(var i=0;i<cities.length;i++){
            //注意铛嘱,比較的是角標(biāo)
            if(val==i){
                //3.遍歷用戶選擇的省份下的城市
                for(var j=0;j<cities[i].length;j++){
                    //alert(cities[i][j]);
                    //4.創(chuàng)建城市的文本節(jié)點(diǎn)
                    var textNode = document.createTextNode(cities[i][j]);
                    //5.創(chuàng)建option元素節(jié)點(diǎn)
                    var opEle = document.createElement("option");
                    //6.將城市的文本節(jié)點(diǎn)添加到option元素節(jié)點(diǎn)
                    opEle.appendChild(textNode);
                    //8.將option元素節(jié)點(diǎn)添加到第二個(gè)下拉列表中去
                    cityEle.appendChild(opEle);
                }
            }
        }
    }
</script>

Html代碼:

<select onchange="changeCity(this.value)">
        <option>--請(qǐng)選擇--</option>
        <option value="0">湖北</option>
        <option value="1">湖南</option>
        <option value="2">河北</option>
        <option value="3">河南</option>
    </select>
    <select id="city">      
</select>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暖释,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子墨吓,更是在濱河造成了極大的恐慌球匕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肛真,死亡現(xiàn)場(chǎng)離奇詭異谐丢,居然都是意外死亡爽航,警方通過查閱死者的電腦和手機(jī)蚓让,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讥珍,“玉大人历极,你說我怎么就攤上這事≈缘瑁” “怎么了趟卸?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)氏义。 經(jīng)常有香客問我锄列,道長(zhǎng),這世上最難降的妖魔是什么惯悠? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任邻邮,我火速辦了婚禮,結(jié)果婚禮上克婶,老公的妹妹穿的比我還像新娘筒严。我一直安慰自己丹泉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布鸭蛙。 她就那樣靜靜地躺著摹恨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娶视。 梳的紋絲不亂的頭發(fā)上晒哄,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音肪获,去河邊找鬼揩晴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贪磺,可吹牛的內(nèi)容都是我干的硫兰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼寒锚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼劫映!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刹前,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤泳赋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后喇喉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祖今,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年拣技,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了千诬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膏斤,死狀恐怖徐绑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莫辨,我是刑警寧澤傲茄,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站沮榜,受9級(jí)特大地震影響盘榨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蟆融,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一草巡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧振愿,春花似錦捷犹、人聲如沸弛饭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侣颂。三九已至,卻和暖如春枪孩,著一層夾襖步出監(jiān)牢的瞬間憔晒,已是汗流浹背钦勘。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工掏秩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人印荔。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓攻询,卻偏偏與公主長(zhǎng)得像从撼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钧栖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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