05_JS函数

函数(function)

函数: 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

函数的声明

函数使用跟变量一样,需要 声明

自定义函数
function func(){
    alert(123);
}
func();//函数不调用,自己不会执行
函数直接量声明
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>

在函数体内部生命变量,会把该变量的声明放在函数体的最顶端,但是只是提升变量声明,不赋值(赋值还在原处)。

函数参数
  • arguments是存储了函数传送过过来实参
  • Javascript在创建函数的同时,会在函数内部创建一个arguments对象实例.
  • arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同
  • arguments对象的长度是由实参个数而不是形参个数决定的
    <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,得到形参的个数
            console.log(arguments.length);//2,得到实参的个数
            console.log(arguments);//实参列表
            console.log(fn.arguments);//实参列表
            if(fn.length == arguments.length){
                console.log(a+b);
            }else{
                console.error("对不起,您的参数不匹配,正确的参数个数为:"+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
  • 定义:
      一个函数实际上就是一个计算过程,计算完成之后的结果就是返回值。
  • 定义函数的返回值:
      在函数内部用return来设置返回值,一个函数只能有一个返回值。
      同时,终止代码的执行。
  • 所有的自定义函数默认没有返回值;
  • 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 表示不是一个数字,isNaN是不是 不是一个数字
  • isNaN(“12”) 如果里面的不是个数字 返回 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 = "成绩必须为数字哦,思密达!";
                }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(); 方法
会触发onfocus事件

鼠标经过选择表单

 sele.onmouseover = function(){
    this.select(); //选择
}

getElementsByTagName() 获取某类标签

前面我们可以通过id得到一个盒子:getElementById()只得到一个盒子
我们想要获取某类标签 比如说所有 的divlispangetElementsByTagName(); 很多个所以是复数
getElementsByTagName();返回值是一个伪数组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 准入训练 第1章 进入忍者世界 js开发人员通常使用js库来实现通用和可重用的功能。这些库需要简单易用,...
    如201608阅读 1,384评论 1 2
  • ☆函数(function) 函数:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 function ...
    越IT阅读 1,061评论 4 9
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,707评论 0 6
  • 应该更专注于自己,更专注于此时此刻! 微博可设几个板块:①百事维新,成为更有趣的人②世界是自己的与他人毫无关系③t...
    1Remold7阅读 220评论 0 0
  • 陌生的城市,想家也想你。 时光荏苒,小树苗终于长成了自己心目中高大的大树,但它一点也不开心。因为它发现这里虽然可以...
    雪清灼阅读 237评论 0 0