美文网首页
09-JavaScript

09-JavaScript

作者: 努力爬行中的蜗牛 | 来源:发表于2018-12-16 22:18 被阅读8次
    JavaScript介绍

    JavaScript是运行在浏览器端的脚本语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互。JavaScript是浏览器解释执行的,前端脚本语言还有JScript(微软,IE独有),ActionScript(Adobe公司,需要插件)等。

    前端三大块

    1、HTML:页面结构
    2、CSS:页面表现,元素大小、颜色、位置、隐藏或显示、部分动画效果。
    3、JavaScript:页面行为,部分动画效果,页面与用户的交互,页面功能。

    JavaScript嵌入页面的方式

    1、行间事件(主要用于事件)
    2、页面script标签嵌入
    3、外部引入

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <!-- 第二种嵌入js方式:内嵌js -->
        <script type="text/javascript">
            alert("hello world too")
        </script>
    
        <!-- 第三种嵌入js方式:外部引入 -->
        <script type="text/javascript" src="js/hello.js"></script>
    </head>
    <body>
        <!-- 第一种嵌入js的方式:行间事件 -->
        <input type="button" name="" value="点击" onclick="alert('hello world')">
    
    </body>
    </html>
    
    变量

    JavaScript是一种弱类型语言,JavaScript的变量类型由它的值来决定。定义变量需要关键字‘var'

    变量类型
    5种基本数据类型:
    1、number 数字类型
    2、string 字符串类型
    3、boolean 布尔类型 true 或 false
    4、undefined undefined类型,变量声明未初始化,它的值就是undefined
    5、null null类型,表示空对象,如果定义的变量将来准备保存对象,可以将变量初始化为null,在页面上获取不到对象,返回的值就是null

    1种符合类型:object

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            /*
                多行注释
            */
    
            // 单行注释
            
            // var iNum = 12;
            // var sTr = 'abc';
    
            // 同时定义多个变量可以用","隔开,共用一个'var'关键字
            var iNum = 12, sTr = 'abc';
    
            alert(iNum);
            alert(sTr);
        </script>
    </head>
    <body>
    
    </body>
    </html>
    

    js语句和注释
    js语句以;结尾;
    注释分为单行注释和多行注释

    变量、函数、属性、函数参数命名规则
    1、区分大小写
    2、第一个字符必须是字母、下划线(_)或者美元符号($)
    3、其他字符可以是字母、下划线、美元符或数字

    匈牙利命名风格
    对象o Object 比如:oDiv
    数组a Array 比如:altems
    字符串s String 比如:sUserName
    整数i Integer 比如:iItemCount
    布尔值b Boolean 比如:blsComplete
    浮点数f Float 比如:fPrice
    函数fn Function 比如:fnHandler
    正则表达式re RegExp 比如:reEmailcheck

    获取元素方法一

    可以使用内置对象document上的getElementById方法来获取页面上设置了id属性的元素,获取到的是一个html对象,然后将它赋值给一个变量。

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            window.onload = function() {
    
                // document.getElementById('div1').style.color = 'red';
                // document.getElementById('div1').style.fontSize = '30px';
    
                // 用变量简化代码
                var oDiv = document.getElementById('div1');
    
                oDiv.style.color = 'red';
                oDiv.style.fontSize = '30px';
            }
            
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
    
    </body>
    </html>
    
    操作元素属性

    获取的页面元素,就可以对页面元素的属性进行操作,属性的操作包括属性的读和写。
    操作属性的方法
    1、"."操作
    2、"[]" 操作
    属性写法
    1、html的属性和js里面的属性写法一样
    2、“class”属性写成“className”
    3、“style”属性里面的属性,有横杠的改成驼峰式,比如:“font-size",改成“style.fontSize”

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                var oA = document.getElementById('link');
                var oDiv2 = document.getElementById('div2');
                // 读取属性
                var sId = oDiv.id;
                alert(sId);
    
                // 写属性
                oDiv.style.color = "red";
                oA.href = "http://www.baidu.com";
                oA.title = "这是百度地址";
    
                // 操作class属性需要写成className
                oDiv2.className = "box2";
    
    
            }
        </script>
    
        <style type="text/css">
            .box {
                font-size: 20px;
                color: gold;
            }
    
            .box2 {
                font-size: 30px;
                color: pink;
            }
        </style>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
        <a href="#" id="link">这是一个链接</a>
    
        <div class="box" id="div2">这是第二个div</div>
    
    </body>
    </html>
    

    中括号【】操作属性

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
    
                var sMytyle = 'fontSize';
                var sValue = '30px';
                // 属性用变量来代替的话,需要用中括号【】来操作
                oDiv.style[sMytyle] = sValue;
            }
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
    
    </body>
    </html>
    

    innerHTML
    innerHTML可以读取或者写入标签包裹的内容。

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                // 读取元素里面的内容
                var sTr = oDiv.innerHTML;
    
                alert(sTr);
    
                // 写元素的内容
                //oDiv.innerHTML = "修改的文字";
    
                oDiv.innerHTML = "<a href='http://itcast.cn'>传智播客</a>";
            }
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
    
    </body>
    </html>
    
    函数

    函数就是重复执行的代码块。
    函数的定义与执行

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            function fnAlert() 
            {
                alert('hello world');
            }
    
    
            // 函数定义
            function fnChange() 
            {
                var oDiv = document.getElementById('div1');
                oDiv.style.color = "red";
                oDiv.style.fontSize = "30px";
            }
    
        </script>
    </head>
    <body>
        <!-- 函数调用 -->
        <div id="div1" onclick="fnAlert()">这是一个div元素</div>
        <input type="button" name="" value="改变div" onclick="fnChange()">
    </body>
    </html>
    

    提取行间事件
    在html行间调用的事件可以提取到JavaScript中调用,从而做到结构与行为分离。

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oBtn = document.getElementById('btn01');
                // 将事件属性和一个函数关联,函数不能写小括号,写了会马上执行
                oBtn.onclick = fnChange;
    
                // 函数定义
                function fnChange() 
                {
                    var oDiv = document.getElementById('div1');
                    oDiv.style.color = "red";
                    oDiv.style.fontSize = "30px";
                }
            }
            
    
        </script>
    </head>
    <body>
        <!-- 函数调用 -->
        <div id="div1">这是一个div元素</div>
        <input type="button" name="" value="改变div" id="btn01">
    </body>
    </html>
    

    匿名函数

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oBtn = document.getElementById('btn01');
                // 匿名函数
                oBtn.onclick = function()
                {
                    var oDiv = document.getElementById('div1');
                    oDiv.style.color = "red";
                    oDiv.style.fontSize = "30px";
                }
            }
            
    
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
        <input type="button" name="" value="改变div" id="btn01">
    </body>
    </html>
    

    网页换肤demo

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <link rel="stylesheet" type="text/css" href="css/skin02.css" id="link01">
        <script type="text/javascript">
            window.onload = function() {
                var oBtn01 = document.getElementById('btn01');
                var oBtn02 = document.getElementById('btn02');
                var oLink = document.getElementById('link01');
    
                // 匿名函数
                oBtn01.onclick = function()
                {
                    oLink.href = "css/skin01.css";
                }
    
                oBtn02.onclick = function() 
                {
                    oLink.href = "css/skin02.css";
                }
            }
            
    
        </script>
    </head>
    <body>
        <input type="button" name="" value="皮肤1" id="btn01">
        <input type="button" name="" value="皮肤2" id="btn02">
    </body>
    </html>
    

    变量与函数的预解析
    JavaScript解析过程分为两个阶段,先是编译阶段,然后执行阶段,在编译阶段会将function定义的函数提前,并且将var定义的变量声明提前,将它赋值为undefined。

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <link rel="stylesheet" type="text/css" href="css/skin02.css" id="link01">
        <script type="text/javascript">
            // 预解析会把变量的声明提前
            alert(iNum); // 弹出undefined
    
            // 预解析会让函数的声明和定义提前
            myalert();
    
    
            var iNum = 12;
    
            function myalert() {
                alert("hello world");
            }
            
    
        </script>
    </head>
    <body>
        
    </body>
    </html>
    

    函数传参

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                function fnMyalert(a) {
                    alert(a);
                }
    
                fnMyalert('hello world');
    
                function fnChangeStyle(mystyle, val) {
                    var oDiv = document.getElementById('div1');
                    oDiv.style[mystyle] = val;
                }
    
                fnChangeStyle('color', 'red');
            }
            
    
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
        
    </body>
    </html>
    

    函数‘return’关键字
    函数中‘return’关键字作用:
    1、返回函数执行的结果
    2、结束函数的运行
    3、阻止默认行为

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            function fnAdd(a, b) {
                var c = a + b;
                return c;
            }
    
            var isResult = fnAdd(2, 5);
            alert(isResult);
        </script>
    </head>
    <body>
        <div id="div1">这是一个div元素</div>
        
    </body>
    </html>
    
    加法运算
    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oInput01 = document.getElementById('input01');
                var oInput02 = document.getElementById('input02');
                var oBtn= document.getElementById('btn');
    
                oBtn.onclick = function() {
                    var iVal01 = parseInt(oInput01.value);
                    var iVal02 = parseInt(oInput02.value);
    
                    alert(iVal01 + iVal02);
                }
    
            }
        </script>
    </head>
    <body>
        <input type="text" name="" id="input01"> +
        <input type="text" name="" id="input02">
    
        <input type="button" name="" value="相加" id="btn">
    
    </body>
    </html>
    
    条件语句

    通过条件来控制程序的走向,就需要用到条件语句。
    运算符
    1、算符运算符:+(加)、-(减)、*(乘)、/(除)、%(求余)
    2、赋值运算符:=、+=、-=、*=、/=、%=
    3、条件运算符:==、===、>、>=、<、<=、!=、&&(而且)、||(或者)、!(否)
    求余数

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var iNum01 = 11;
                var iNum02 = 2;
    
                alert(iNum01%iNum02);
    
            }
        </script>
    </head>
    <body>
        
    
    </body>
    </html>
    

    赋值运算

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var iNum01 = 12;
                iNum01 += 2;
    
                iNum01 -= 5;
    
                iNum01 *= 2;
    
                iNum01 /= 2;
    
                iNum01 %= 2;
    
                iNum01++;
    
            }
        </script>
    </head>
    <body>
        
    
    </body>
    </html>
    

    if else

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            var iNum01 = 2;
            var sNum01 = '2';
    
            // 两个等号会进行类型转换再比较
            if (iNum01===sNum01) {
                alert('相等');
            } else {
                alert('不相等');
            }
    
            if (!4>3) {
                alert('大于');
            } else { 
                alert('不大于');
            }
        </script>
    </head>
    <body>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oBtn = document.getElementById('btn01');
                var oDiv = document.getElementById('box01');
    
                // oDiv.style.display 是读取的标签里写的display属性值,如果没有写,这个值为空
                oBtn.onclick = function() {
                    if (oDiv.style.display === 'block' || oDiv.style.display === '') {
                        oDiv.style.display = 'none';
                    } else {
                        oDiv.style.display = 'block';
                    }
                }
            }
        </script>
    
        <style type="text/css">
            .box {
                width: 300px;
                height: 400px;
                background-color: gold;
            }
        </style>
    </head>
    <body>
        <input type="button" name="" value="切换" id="btn01">
        <div class="box" id="box01"></div>
    
    </body>
    </html>
    

    多重条件判断语句

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var iWeek = 5;
                var oBody = document.getElementById('body01');
    
                if (iWeek===1) {
                    oBody.style.backgroundColor = 'gold';
                } else if (iWeek===2) {
                    oBody.style.backgroundColor = 'green';
                } else if (iWeek===3) {
                    oBody.style.backgroundColor = 'pink';
                } else if (iWeek===4) {
                    oBody.style.backgroundColor = 'yellowgreen';
                } else if (iWeek===5) {
                    oBody.style.backgroundColor = 'lightblue';
                } else {
                    oBody.style.backgroundColor = 'lightgreen';
                }
            }
            
        </script>
    </head>
    <body id=body01>
    
    </body>
    </html>
    

    switch语句
    多重if else语句可以换成性能更高的switch语句。

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var iWeek = 3;
                var oBody = document.getElementById('body01');
    
                switch (iWeek) {
                    case 1:
                        oBody.style.backgroundColor = 'gold';
                        break;
                    case 2:
                        oBody.style.backgroundColor = 'green';
                        break;
                    case 3:
                        oBody.style.backgroundColor = 'pink';
                        break;
                    case 4:
                        oBody.style.backgroundColor = 'yellowgreen';
                        break;
                    case 5:
                        oBody.style.backgroundColor = 'lightblue';
                        break;
                    default:
                        oBody.style.backgroundColor = 'lightgreen';
                }
            }
            
        </script>
    </head>
    <body id=body01>
    
    </body>
    </html>
    
    数组及操作方法

    数组就是一组数据的集合,JavaScript中,数组里面的数据可以是不同类型的。
    定义数组的方法

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                // 数组的定义方法1:通过类实例化来创建数组,效率不高
                var aList01 = new Array(1, 2, 3);
                // 通过直接量的方式创建数组
                var aList02 = [1, 2, 3];
    
            }
        </script>
    </head>
    <body>
        
    
    </body>
    </html>
    

    操作数据中数据的方法

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                // 数组的定义方法1:通过类实例化来创建数组,效率不高
                var aList01 = new Array(1, 2, 3);
                // 通过直接量的方式创建数组
                var aList02 = [1, 2, 3];
    
                // 1、通过length来获取数组成员的个数
                alert(aList02.length);
    
                // 2、用下标来操作数组的某个数据
                alert(aList02[0]);
    
                // 3/join()将数组成员通过一个分隔符合并成字符串
                alert(aList02.join('-'));
    
                // 4、通过push方法在数组后面增加成员,通过pop方法删除成员
                aList02.push('b');
                alert(aList02);
                aList02.pop();
                alert(aList02);
    
                // 5、unshift()和shift()从数组前面增加成员或删除成员
                aList02.unshift(4);
                alert(aList02);
                aList02.shift();
                alert(aList02);
    
                // 6、reverse()将数组反转
                aList02.reverse();
                alert(aList02);
    
                // 7、indexOf()返回数组中元素第一次出现的索引值
                alert(aList02.indexOf(1));
    
                // 8、splice()在数组中增加或删除成员
                // 从第二个元素开始,删除1个元素,然后在此位置增加'7,8,9'三个元素
                aList02.splice(2,1,7,8,9); 
                alert(aList02);
    
            }
        </script>
    </head>
    <body>
        
    
    </body>
    </html>
    

    多维数组
    多维数组指的是数组的成员也是数组的数组。

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var aList = [[1, 2, 3, 4],['a','b','c'],[6, 7, 8]];
                alert(aList.length);
                alert(aList[0].length);
                alert(aList[0][1]);
            }
        </script>
    </head>
    <body>
    
    </body>
    </html>
    
    循环语句

    程序中进行有规律的重复性操作,需要用到循环语句。
    for循环

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var aList = [[1, 2, 3, 4],['a','b','c'],[6, 7, 8]];
                alert(aList.length);
                alert(aList[0].length);
                alert(aList[0][1]);
            }
        </script>
    </head>
    <body>
        
    
    </body>
    </html>
    

    for循环实例

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oUl = document.getElementById('list');
                var aList = ['美人鱼', '疯狂动物城', '魔兽', '美国队长3', '湄公河行动'];
                var aLen = aList.length;
                var sTr = '';
    
                for (var i = 0; i < aLen; i++) {
                    sTr += '<li>' + aList[i] + '</li>';
                }
    
                oUl.innerHTML = sTr;
            }
        </script>
    
        <style type="text/css">
            .list {
                list-style: none;
                margin: 50px auto 0;
                padding: 0;
                width: 300px;
                height: 305px;
            }
    
            .list li {
                height: 60px;
                line-height: 60px;
                font-size: 16px;
                border-bottom: 1px dotted #000;
            }
        </style>
    </head>
    <body>
        <ul class="list" id="list">
            
        </ul>
    
    </body>
    </html>
    

    while循环

    var i = 0;
    while (i < 8) {
        ...
        i++;
    }
    

    数组去重

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            var aList = [2,3,4,5,6,7,8,3,4,5,2,7,8,9,3,4,5,6,3,4,8,9];
            var aList2 = [];
            var aLen = aList.length;
    
            for (var i = 0; i < aLen; i++) {
                if (aList.indexOf(aList[i]) == i) {
                    aList2.push(aList[i]);
                }
            }
    
            alert(aList2);
    
    
        </script>
    
        
    </head>
    <body>
        
    
    </body>
    </html>
    
    获取元素方法二

    可以使用内置对象document上的getElementsByTagName方法来获取页面上的某一种标签,获取的是一个选择集,不是数组,但是可以用下标的方式操作选择集里面的标签元素。

    <!DOCTYPE html>
    <html>
    <head>
        <title>通过标签获取元素</title>
        <script type="text/javascript">
            window.onload = function() {
                // 通过标签名称获取li元素,生成一个选择集,赋值给aLi
                var aLi = document.getElementsByTagName('li');
                alert(aLi.length);
                var iLen = aLi.length;
    
                // for (var i = 0; i < iLen; i++) {
                //  var li = aLi[i];
                //  li.style.backgroundColor = "green";
                // }
    
                var oUl = document.getElementById('list1');
                var aLi2 = oUl.getElementsByTagName('li');
    
                var iLen2 = aLi2.length;
    
                for (var i = 0; i < iLen2; i++) {
                    if(i%2 == 0) {
                        aLi2[i].style.backgroundColor = 'gold';
                    } else {
                        aLi2[i].style.backgroundColor = 'green';
                    }
                 }
    
    
            }
    
        </script>
    </head>
    <body>
        <ul id="list1">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
        </ul>
    
        <ul id="list2">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
        
    </body>
    </html>
    
    JavaScript组成

    1、ECMAscript JavaScript的语法(变量、函数、循环语句等语法)
    2、DOM文档对象模型,操作html和css的方法
    3、BOM浏览器对象模型,操作浏览器的一些方法

    字符串处理方法

    1、字符串合并操作:“+”
    2、parseInt()将数字字符串转换为整数
    3、parseFloat()将数字字符串转化为小数
    4、split()把一个字符串分割成字符串组成的数组
    5、charAt()获取字符串中的某一个字符
    6、indexOf()查找字符串是否含有某个字符
    7、substring()截取字符串 用法:substring(start,end) (不包括end)
    8、toUpperCase()字符串转大写
    9、toLowerCase()字符串转小写
    10、字符串反转

    <!DOCTYPE html>
    <html>
    <head>
        <title>字符串处理方法</title>
        <script type="text/javascript">
            var iNum01 = 12;
            var sNum02 = '24';
            var sTr = 'abc';
    
            // 1、数字和字符串相加 等同于字符串拼接
            // alert(iNum01 + sNum02);
    
            // alert(sNum02 + sTr);
    
            // 2、将数字字符串转换为整数
            var sTr02 = '12.35';
            // alert(parseInt(sTr02)); // 弹出12
    
            // 3、将数字字符串转化为小数
            // alert(parseFloat(sTr02));
    
            // 4、把一个字符串分割成字符串组成的数组
            var sTr03 = '2017-4-22';
            var aRr = sTr03.split('-'); 
            // alert(aRr); // 弹出['2017','4','22']
    
            var aRr2 = sTr03.split('');
            // alert(aRr2);
    
            // 5、获取字符串中的某一个字符
            var sTr04 = '#div';
            var sTr05 = sTr04.charAt(0); 
            // alert(sTr05);
    
            // 6、查找字符串是否含有某个字符
            var sTr06 = 'abcdef microsoft asldjfl';
            var iNum03 = sTr06.indexOf('microsoft'); // 没有就返回-1
            // alert(iNum03);
    
            // 7、截取字符串
            var sTr07 = 'abcdef123456edfg';
            var sTr08 = sTr07.substring(6,12);
            // alert(sTr08);
    
            var sTr09 = sTr04.substring(1); // 第二个参数不写表示到末尾
            // alert(sTr09);
    
            // 8、字符串转大写
            var sTr10 = 'abcdef';
            var sTr11 = sTr10.toUpperCase();
            // alert(sTr11);
    
            // 9、字符串转小写
            var sTr12 = sTr11.toLowerCase();
            // alert(sTr12);
    
            // 10、字符串反转
            var sTr13 = '1234kjfkjkdjfkghkhieidkjfk';
            var sTr14 = sTr13.split('').reverse().join('');
            alert(sTr14);
    
    
        </script>
    </head>
    <body>
    
    </body>
    </html>
    
    定时器

    定时器在JavaScript中的作用
    1、制作动画
    2、异步操作
    3、函数缓冲与节流

    <!DOCTYPE html>
    <html>
    <head>
        <title>定时器</title>
    
        <script type="text/javascript">
            function myalert() {
                alert('hello world');
            }
    
            // 1、只执行一次的定时器:第一个参数是函数名或者是匿名函数,第二个参数是时间,单位是ms(毫秒)
            var  timer01 = setTimeout(myalert,2000);
            // 2、关闭只执行一次的定时器
            clearTimeout(timer01);
    
            // 3、反复执行的定时器
            var timer02 = setInterval(myalert,1000);
            // 4、关闭反复执行的定时器
            clearInterval(timer02);
    
            // 匿名函数的写法
            var timer03 = setInterval(function(){alert('hello python')},1000)
    
        </script>
    </head>
    <body>
    
    </body>
    </html>
    

    运动动画demo

    <!DOCTYPE html>
    <html>
    <head>
        <title>定时器动画</title>
        <style type="text/css">
            .box {
                width: 200px;
                height: 200px;
                background-color: gold;
                position: absolute;
                left: 0;
                top: 100px;
            }
        </style>
    
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                var iLeft = 0;
    
                function moving() {
                    iLeft += 10;
                    oDiv.style.left = iLeft + 'px';
    
                    if (iLeft >= 1000) {
                        clearInterval(timer);
                    }
                }
    
                var timer = setInterval(moving, 100);
            }
        </script>
    </head>
    <body>
        <div id='div1' class="box"></div>
    
    </body>
    </html>
    

    无缝滚动demo

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无缝滚动</title>
        <style type="text/css">
            *{
                margin:0;
                padding:0;
            }
    
            .list_con{
                
                width:1000px;
                height:200px;
                border:1px solid #000;
                margin:10px auto 0;
                background-color:#f0f0f0;
                position:relative;
                overflow:hidden;
            }
    
            .list_con ul{
                list-style:none;
                width:2000px;
                height:200px;
                position:absolute;
                left:0;
                top:0;
            }
    
    
            .list_con li{
                width:180px;
                height:180px;
                float:left;
                margin:10px;
            }
    
            .btns_con{
                width:1000px;
                height:30px;
                margin:50px auto 0;
                position:relative;
            }
    
            .left,.right{
                width:30px;
                height:30px;
                background-color:gold;
                position:absolute;
                left:-40px;
                top:124px;
                font-size:30px;
                line-height:30px;
                color:#000;
                font-family: 'Arial';
                text-align:center;
                cursor:pointer;
                border-radius:15px;
                opacity:0.5;
            }
    
            .right{
                left:1010px;            
                top:124px;          
            }
    
        </style>
    
        <script type="text/javascript">
            window.onload = function(){
                var oDiv = document.getElementById('slide');
                var oBtn01 = document.getElementById('btn01');
                var oBtn02 = document.getElementById('btn02');
    
                // 通过标签获取元素,获取的是选择集,加上下标才能获取到元素
                var oUl = oDiv.getElementsByTagName('ul')[0];
                var iLeft = 0;
                var iSpeed = -2;
                var iNowspeed = 0;
                // 将ul里面的内容复制一份,整个ul里面就包含了10个li
                oUl.innerHTML = oUl.innerHTML + oUl.innerHTML;
                function moving() {
                    iLeft += iSpeed;
                    oUl.style.left = iLeft + 'px';
    
                    // 当ul向左滚动到第5个li时,瞬间将整个ul拉回到初始位置
                    if (iLeft < -1000) {
                        iLeft = 0;
                    }
    
                    // 当ul在起始位置往右滚动时候,瞬间将整个ul拉回到往左的第5个li的位置
                    if (iLeft > 0) {
                        iLeft = -1000;
                    }
                }
    
                var timer = setInterval(moving, 30);
    
                oBtn01.onclick = function() {
                    iSpeed = -2;
                }
    
                oBtn02.onclick = function() {
                    iSpeed = 2;
                }
    
                // 当鼠标移入的时候
                oDiv.onmouseover = function() {
                    iNowspeed = iSpeed;
                    iSpeed = 0;
                }
    
                // 当鼠标移出的时候
                oDiv.onmouseout = function() {
                    iSpeed = iNowspeed;
                }
    
            }
    
    
        </script>
    </head>
    <body>
        <div class="btns_con">
            <div class="left" id="btn01">&lt;</div>
            <div class="right" id="btn02">&gt;</div>
        </div>
        <div class="list_con" id="slide">
            <ul>
            <li><a href=""><img src="images/goods001.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods002.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods003.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods004.jpg" alt="商品图片"></a></li>
            <li><a href=""><img src="images/goods005.jpg" alt="商品图片"></a></li>
            </ul>       
        </div>
    </body>
    </html>
    
    变量作用域

    变量作用域指的是变量的作用范围,JavaScript中的变量分为全局变量和局部变量。
    1、全局变量:在函数之外定义的变量,为整个页面共用,函数内部外部都可以访问。
    2、局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript">
    
            //函数外部定义的是全局变量,函数内部和外部都可以访问
            var iNum01 = 12;
    
            // 重复定义,后面的会覆盖前面的值
            //var iNum01 = 14;
    
            function myalert(){
    
                //var iNum01 = 24;
    
                // 函数内部定义的是局部变量,函数内部可以访问,外部不能访问
                var iNum02 = 36;
    
                alert(iNum01);
                iNum01 += 10;
            }
    
    
            function myalert02(){
                alert(iNum01);
            }
    
            myalert();  // 弹出 12
            myalert02();  // 弹出 22
    
            //alert(iNum02);  出错!
    
    
    
        </script>
    </head>
    <body>
        
    </body>
    </html>
    

    时钟demo

    <!DOCTYPE html>
    <html>
    <head>
        <title>时钟</title>
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
    
    
                function fnTimego() {
                    var sNow = new Date();
    
                    // 获取年份
                    var iYear = sNow.getFullYear();
                    // 月份是从0-11 0表示1月  11表示12月
                    var iMonth = sNow.getMonth() + 1;
    
                    // 星期是从0-6
                    var iDate = sNow.getDate();
                    var iWeek = sNow.getDay();
                    var iHour = sNow.getHours();
                    var iMinute = sNow.getMinutes();
                    var iSecond = sNow.getSeconds();
    
                    var sTr = '当前时间是:' + iYear + '年' + fnTodou(iMonth) + '月' + fnTodou(iDate) + '日' + ' ' + fnToWeek(iWeek) + ' ' + fnTodou(iHour) + ':' + fnTodou(iMinute) + ':' + fnTodou(iSecond);
                    oDiv.innerHTML = sTr;
                }
    
                // 刚开始调用一次解决刚开始1s空白的问题
                fnTimego();
    
                setInterval(fnTimego, 1000);
    
                function fnToWeek(n) {
                    if (n == 0) {
                        return '星期日';
                    } else if (n == 1) {
                        return '星期一';
                    } else if (n == 2) {
                        return '星期二';
                    } else if (n == 3) {
                        return '星期三';
                    } else if (n == 4) {
                        return '星期四';
                    } else if (n == 5) {
                        return '星期五';
                    } else if (n == 6) {
                        return '星期六';
                    }
                }
    
                function fnTodou(n) {
                    if (n < 10) {
                        return '0' + n;
                    } else {
                        return n;
                    }
                }
            }
    
        </script>
    
        <style type="text/css">
            div {
                text-align: center;
                font-size: 30px;
                color: pink;
            }
        </style>
    </head>
    <body>
        <div id="div1"></div>
    
    </body>
    </html>
    

    倒计时demo

    <!DOCTYPE html>
    <html>
    <head>
        <title>倒计时</title>
    
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1');
    
                function fnTimeleft() {
                    var sNow = new Date();
                    // 未来时间2018.12.31 23:59:59
                    var sFuture = new Date(2018,11,31,23,59,59);
    
                    // 计算还有多少秒
                    var sLeft = parseInt((sFuture - sNow) / 1000);
                    // 计算还剩多少天
                    var iDays = parseInt(sLeft/86400);
                    // 计算还剩多少小时
                    var iHours = parseInt((sLeft % 86400) / 3600);
                    // 计算还剩多少分钟
                    var iMinutes = parseInt(((sLeft % 86400) % 3600) / 60);
                    // 计算还剩多少秒
                    var iSeconds = sLeft % 60;
    
                    var sTr = '距离2019年还剩:' + fnTodou(iDays) + '天' + fnTodou(iHours) + '时' + fnTodou(iMinutes) + '分' + fnTodou(iSeconds) + '秒';
                    oDiv.innerHTML = sTr;
                }
    
                fnTimeleft();
    
                setInterval(fnTimeleft, 1000);
                
                function fnTodou(n) {
                    if (n < 10) {
                        return '0' + n;
                    } else {
                        return n;
                    }
                }
            }
        </script>
    
        <style type="text/css">
            div {
                text-align: center;
                font-size: 30px;
                color: pink;
            }
        </style>
    </head>
    <body>
        <div id="div1"></div>
    
    </body>
    </html>
    
    封闭函数

    封闭函数时JavaScript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。

    <!DOCTYPE html>
    <html>
    <head>
        <title>封闭函数</title>
        <script type="text/javascript">
            // 封闭函数 可以防止命名冲突的问题
            (function() {
                alert('hello world!');
            })();
            // 封闭函数的其他写法 加!或者~
            !function() {
                alert('hello world!');
            }();
    
            ~function() {
                alert('hello world!');
            }();
    
            var iNum01 = 12;
    
            function myalert() {
                alert(iNum01);
            }
    
            // 在封闭函数前面加一个“;”,可以避免js压缩时出错
            (function() {
                var iNum01 = 24;
                function myalert()  {
                    alert("hello python");
                }
    
                myalert();
            })();
    
            alert(iNum01);
            myalert();
    
        </script>
    </head>
    <body>
    
    </body>
    </html>
    
    常用内置对象

    1、document

    document.getElementById // 通过id获取元素
    document.getElementByTagName // 通过标签名获取元素
    document.referrer // 获取上一个跳转页面的地址(需要服务器环境)
    

    2、location

    window.location.href // 获取或者重定url地址
    window.location.search // 获取地址参数部分
    window.location.hash // 获取页面锚点或者哈希值
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>location属性</title>
        <script type="text/javascript">
            window.onload = function() {
                // 存储上一个页面的地址:
                // var sUrl = document.referrer;
    
                var oBtn = document.getElementById('btn01');
    
                oBtn.onclick = function() {
                    // var sUrl = document.referrer;
                    window.location.href = 'http://www.baidu.com';
                }
    
                var oBody = document.getElementById('body');
    
    
                var sData = window.location.search;
    
                var sHash = window.location.hash;
                alert(sHash);
                
                if (sData != '') {
                    var aRr = sData.split('=');
    
                    var iNum = aRr[1];
    
                    if (iNum == 1) {
                        oBody.style.backgroundColor = 'gold';
                    } else if (iNum == 2) {
                        oBody.style.backgroundColor = 'green';
                    } else if (iNum == 3) {
                        oBody.style.backgroundColor = 'pink';
                    }
                }
    
    
            }
    
        </script>
    </head>
    <body id="body">
        <input type="button" name="" value="跳转" id="btn01">
    
    </body>
    </html>
    

    3、Math

    Math.random 获取0-1随机数
    Math.floor 向下取整
    Math.ceil 向上取整
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>math</title>
    
        <script type="text/javascript">
            var iPi = Math.PI;
            alert(iPi);
    
            
            var arr = []
            for (var i = 0; i < 20; i++) {
                // 返回0-1之间的随机数 不包括1
                var iNum = Math.random();
                arr.push(iNum);
            }
    
            console.log(arr)
    
            // 向下取整 去掉小数部分
            alert(Math.floor(5.6));
            // 向上取整 去掉小数 部分
            alert(Math.ceil(5.6));
    
    
            // 10 - 20之间的随机数
            var iN01 = 10;
            var iN02 = 20;
            var arr2 = [];
    
            for (var i = 0; i < 30; i++) {
                var iNum02 = Math.floor((iN02-iN01)*Math.random()) + iN01;
                arr2.push(iNum02);
            }
    
            console.log(arr2);
                
             
    
        </script>
    </head>
    <body>
    
    </body>
    </html>
    
    调试程序的方法

    1、alert()
    2、console.log()
    3、document.title()

    <!DOCTYPE html>
    <html>
    <head>
        <title>js</title>
        <script type="text/javascript">
            window.onload = function() {
                var oBody = document.getElementById('body01');
                var iNum01 = 12;
    
                //alert会阻止程序的运行
                alert(iNum01);
    
                oBody.style.backgroundColor = 'gold';
                var iNum02 = 24;
                console.log(iNum02);
    
                document.title = iNum02;
            }
    
        </script>
    </head>
    <body id="body01">
    
    
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:09-JavaScript

          本文链接:https://www.haomeiwen.com/subject/fptfkqtx.html