05_JS函數(shù)

函數(shù)(function)

函數(shù): 函數(shù)是由事件驅動的或者當它被調用時執(zhí)行的可重復使用的代碼塊潘拱。

函數(shù)的聲明

函數(shù)使用跟變量一樣幅狮,需要 聲明

自定義函數(shù)
function func(){
    alert(123);
}
func();//函數(shù)不調用津畸,自己不會執(zhí)行
函數(shù)直接量聲明
var fun1 = function(){
    alert("直接量聲明")
}
fun1();  也需要調用
利用Function 關鍵字聲明
var fun2 = new Function("var a = 10; var b = 20; alert(a+b)");
fun2();
變量提升
<script>
        var num  = 10;
        showValue();

        function showValue(){
            console.log(num);//undefined
            var num =  20;
        }
</script>

上面的結果打印的不是10,而是undefined
上面的代碼等價于====》

    <script>
        var num  = 10;
        showValue();

        function showValue(){
            var num;
            console.log(num);
            num =  20;
        }
    </script>

在函數(shù)體內部生命變量捐凭,會把該變量的聲明放在函數(shù)體的最頂端淑廊,但是只是提升變量聲明,不賦值(賦值還在原處)旧烧。

函數(shù)參數(shù)
  • arguments是存儲了函數(shù)傳送過過來實參
  • Javascript在創(chuàng)建函數(shù)的同時影钉,會在函數(shù)內部創(chuàng)建一個arguments對象實例.
  • arguments對象只有函數(shù)開始時才可用。函數(shù)的 arguments 對象并不是一個數(shù)組掘剪,訪問單個參數(shù)的方式與訪問數(shù)組元素的方式相同
  • arguments對象的長度是由實參個數(shù)而不是形參個數(shù)決定的
    <script>
       /* function func(a,b){
            console.dir(a+b);
        }
        func(1,3);//4
        func(5);//NaN
        func(4,6,2);//10*/
        function fn(a,b){
            console.log(fn.length);//2,得到形參的個數(shù)
            console.log(arguments.length);//2平委,得到實參的個數(shù)
            console.log(arguments);//實參列表
            console.log(fn.arguments);//實參列表
            if(fn.length == arguments.length){
                console.log(a+b);
            }else{
                console.error("對不起,您的參數(shù)不匹配夺谁,正確的參數(shù)個數(shù)為:"+fn.length);
            }
        }
        fn(2,3);
        fn(2,3,4);
    </script>

例:

<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        body,ul,li{
            margin: 0;
            padding: 0;
        }
        ul,li{
            list-style: none;
        }
        .box{
            width: 360px;
            height: 430px;
            margin: 100px auto;
        }
        .box li{
            float: left;
            margin-left: 2px;
        }
    </style>
    <script type="text/javascript">
        window.onload = function(){
            var imgDom = document.getElementById("main-img");
            function fn(liId,imageSrc){
                var target = document.getElementById(liId);
                target.onmouseover = function(){
                    imgDom.src = imageSrc;
                }
            }
            fn("li-btn1","images/01big.jpg");
            fn("li-btn2","images/02big.jpg");
            fn("li-btn3","images/03big.jpg");
            fn("li-btn4","images/04big.jpg");
            fn("li-btn5","images/05big.jpg");
        }

    </script>
</head>
<body>
    <div class="box">
        ![](images/01big.jpg)
        <ul>
            <li id="li-btn1">![](images/01.jpg)</li>
            <li id="li-btn2">![](images/02.jpg)</li>
            <li id="li-btn3">![](images/03.jpg)</li>
            <li id="li-btn4">![](images/04.jpg)</li>
            <li id="li-btn5">![](images/05.jpg)</li>
        </ul>
    </div>
</body>
</html>
返回值 return
  • 定義:
      一個函數(shù)實際上就是一個計算過程廉赔,計算完成之后的結果就是返回值。
  • 定義函數(shù)的返回值:
      在函數(shù)內部用return來設置返回值匾鸥,一個函數(shù)只能有一個返回值蜡塌。
      同時,終止代碼的執(zhí)行勿负。
  • 所有的自定義函數(shù)默認沒有返回值馏艾;
  • Return 后面不要換行
焦點的事件

我們前面學過了 onclick 點擊 onmouseoveronmouseout奴愉。

  • 獲得焦點: onfocus
  • 失去焦點: onblur

例:搜索框校驗

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        .box{
            width: 258px;
            height: 40px;
            margin: 50px auto;

        }
        input{
            padding: 0;
            margin: 0;
        }
        .box input[type="text"]{
            width: 206px;
            height: 40px;
            background: url("images/left.jpg");
            border: 0 none;
            outline-style: none;
            padding-left: 10px;
            float: left;
            color: #999;
        }
        .box input[type="button"]{
            width: 42px;
            height: 40px;
            background: url("images/right.jpg");
            float: right;
            border: 0 none;
            cursor: pointer;
        }
    </style>
    <script type="text/javascript">
        window.onload = function(){
            var searchTxt = document.getElementById("searchTxt");
            searchTxt.onfocus = function(){//得到焦點
                if(this.value == "請輸入..."){
                    this.value = "";
                    this.style.color = "#000";
                }
            }
            searchTxt.onblur = function(){//失去焦點
                if(this.value == ""){
                    this.value = "請輸入...";
                    this.style.color = "#999";
                }
            }
        }
    </script>
</head>
<body>
    <div class="box">
        <input type="text" value="請輸入..." id="searchTxt"/>
        <input type="button"/>
    </div>
</body>
</html>
this琅摩、className、innerHTML锭硼、value
  • 指的是本身房资,This 主要是指事件的調用者 。
  • className 類名

$("result").className ="wrong";

  • innerHTML
    更換 盒子里面的內容 文字 標簽都換.
  • 表單更換內容
    Input.value
  • isNaN : NaN 表示不是一個數(shù)字账忘,isNaN是不是 不是一個數(shù)字
  • isNaN(“12”) 如果里面的不是個數(shù)字 返回 true 否則返回false

例: 表單驗證

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        body{
            margin: 0;
            padding: 0;
        }
        .box{
            text-align: center;
            margin: 100px auto;
        }
        .box span{
            display: inline-block;
            width: 200px;
            height: 20px;
            border: 1px solid #ccc;
            line-height: 20px;
            font-size: 12px;
            text-align: left;
            background-color: #eee;
            padding-left: 20px;
            color: #999;
        }
        .box .right{
            color: #5EFF5E;
            background:#DFFFDF url("images/right.png") no-repeat 4px;
            border: 1px solid #ACFFAC;
        }
        .box .error{
            color: #FF6B39;
            background:#FFDCD0 url("images/wrong.png") no-repeat 4px;
            border: 1px solid #FFAC91;
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {
            //模擬jquery,
            function $(id) {return  document.getElementById(id);}
            $("mytxt").onblur = function () {
                if(this.value == ""){
                    $("result").className = "error";
                    $("result").innerHTML = "成績不能為空志膀!";
                }else if(isNaN(this.value)){
                    $("result").className = "error";
                    $("result").innerHTML = "成績必須為數(shù)字哦熙宇,思密達!";
                }else if(this.value>150 || this.value<0){
                    $("result").className = "error";
                    $("result").innerHTML = "成績必須為0~150溉浙!";
                }else{
                    $("result").className = "right";
                    $("result").innerHTML = "輸入的成績正確";
                }
            }
        }
    </script>
</head>
<body>
    <div class="box">
        語文成績:
        <input type="text" id="mytxt"/>
        <span id="result">請輸入語文成績</span>
    </div>
</body>
</html>

表單自動獲得焦點

Input.focus(); 方法
會觸發(fā)onfocus事件

鼠標經(jīng)過選擇表單

 sele.onmouseover = function(){
    this.select(); //選擇
}

getElementsByTagName() 獲取某類標簽

前面我們可以通過id得到一個盒子:getElementById()只得到一個盒子
我們想要獲取某類標簽 比如說所有 的div烫止、lispangetElementsByTagName(); 很多個所以是復數(shù)
getElementsByTagName();返回值是一個偽數(shù)組戳稽。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末馆蠕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惊奇,更是在濱河造成了極大的恐慌互躬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂郎,死亡現(xiàn)場離奇詭異吼渡,居然都是意外死亡,警方通過查閱死者的電腦和手機乓序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門寺酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人替劈,你說我怎么就攤上這事寄雀。” “怎么了陨献?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵盒犹,是天一觀的道長。 經(jīng)常有香客問我眨业,道長急膀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任坛猪,我火速辦了婚禮脖阵,結果婚禮上,老公的妹妹穿的比我還像新娘墅茉。我一直安慰自己,他們只是感情好呜呐,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布就斤。 她就那樣靜靜地躺著,像睡著了一般蘑辑。 火紅的嫁衣襯著肌膚如雪洋机。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天洋魂,我揣著相機與錄音绷旗,去河邊找鬼喜鼓。 笑死,一個胖子當著我的面吹牛衔肢,可吹牛的內容都是我干的庄岖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼角骤,長吁一口氣:“原來是場噩夢啊……” “哼隅忿!你這毒婦竟也來了?” 一聲冷哼從身側響起邦尊,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤背桐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蝉揍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體链峭,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年又沾,在試婚紗的時候發(fā)現(xiàn)自己被綠了弊仪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捍掺,死狀恐怖撼短,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情挺勿,我是刑警寧澤曲横,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站不瓶,受9級特大地震影響禾嫉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜蚊丐,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一熙参、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧麦备,春花似錦孽椰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呛梆,卻和暖如春锐涯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背填物。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工纹腌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霎终,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓升薯,卻偏偏與公主長得像莱褒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子覆劈,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 第一部分 準入訓練 第1章 進入忍者世界 js開發(fā)人員通常使用js庫來實現(xiàn)通用和可重用的功能保礼。這些庫需要簡單易用,...
    如201608閱讀 1,352評論 1 2
  • ☆函數(shù)(function) 函數(shù):函數(shù)是由事件驅動的或者當它被調用時執(zhí)行的可重復使用的代碼塊责语。 function ...
    越IT閱讀 1,044評論 4 9
  • 第一章: JS簡介 從當初簡單的語言炮障,變成了現(xiàn)在能夠處理復雜計算和交互,擁有閉包坤候、匿名函數(shù)胁赢, 甚至元編程等...
    LaBaby_閱讀 1,670評論 0 6
  • 應該更專注于自己,更專注于此時此刻白筹! 微博可設幾個板塊:①百事維新智末,成為更有趣的人②世界是自己的與他人毫無關系③t...
    1Remold7閱讀 215評論 0 0
  • 陌生的城市系馆,想家也想你。 時光荏苒顽照,小樹苗終于長成了自己心目中高大的大樹由蘑,但它一點也不開心。因為它發(fā)現(xiàn)這里雖然可以...
    雪清灼閱讀 214評論 0 0