当前位置: 首页 > 工具软件 > Say.js > 使用案例 >

js(JavaScript)

蔺宇
2023-12-01

一.js的简介
   1.什么是js 
     js可以嵌套到HTML中(基于对象)和(事件触发)的脚本语言
           特点
        A.交互性
        B.安全性   js不能直接访问本地磁盘
        C.跨平台  浏览器只要具备js解析器
    2.js能干嘛
      1)js动态修改(新增、删除)HTML标签和CSS代码
      2)js动态做校验数据
    3)js的历史及组成
      ECMAScript(js的基本语法和对象)   BOM(浏览器对象模型)    DOM(文档对象模型)
    4)js的引用方式
       A.内嵌脚本
          <input type="button" value="button" οnclick="alert('XXX')"/>
       B.内部脚本
          <input type="button" value="button"/>
           <script type="text/javascript">
              alert('XXX');
           </script> 
       C.外部脚本
         1.创建一个js文件
         2.在HTML中引入js脚本
           <input type="button" value="button"/>
           <script type="text/javascript" src="demo1.js"></script>
              总结:
        1.JS往哪儿放
                         在不影响HTML页面加载效果情况下,越晚加载越好
        2.编程建议  <script>引入外部文件的时候  标签中不建议写脚本内容
二.js的基本语法
   1)变量
     var a=12;
     a="javascript";
     a='哈哈';
     var b=true;
   2)原始数据类型(了解)
     1)number:数字类型
     2)string:字符串类型
     3)boolean:布尔类型
     4)null:空类型
     5)undefined:未定义的
            注意:
          number  string  boolean 伪对象
                        数据类型转换
             number   boolean 转        string
             toString()
             
             string   boolean 转      number
             parseInt()
             parseFloat()
             boolean类型  parseInt() 不能转 number NaN
             string类型  parseInt()可以转 number  '123哈哈456' 转'123'
             
             string   number  转  boolean
             Boolean()
             number转  boolean 可以  非0为true  0为false
             string转boolean  可以   非空为true  空为false
             
             string   boolean  转 number
             Number()
             boolean类型   Number() 可以转 number true 1 false 0
             string类型   Number() 如果是数字可以转  如果 '123哈哈'  转换结果 NaN
             
    3)引用数据类型
       java:Object obj=new Object();
       js:  var obj=new Object();
    4)运算符
       1.赋值运算符
         =
         var a=5;
       2.算术运算符
         + - * / % ++ --
         +:遇到字符串  连接符 拼接
         -:遇到字符串 转为数字  Number() 再计算
         *:遇到字符串 转为数字  Number() 再计算
         /:遇到字符串 转为数字  Number() 再计算  7/2=3.5  number
       3.逻辑运算符
          &&  ||
       4.比较运算符
          >  <  >=  <= == !=
          == :忽略数据类型的 值比较
          ===:全等   比较值与数据类型
       5.三目运算符
         3>2?"大于":"小于"
       6.void运算符
         <a href="javascript:void(0)">点击我吧</a>
       7.类运算符
         typeof() :判断数据类型  返回 数据的该类型
         instanceof:判断类型   返回 布尔值
         alert(typeof(obj));//object
         alert(obj instanceof Object);//true
         
    5)逻辑语句
      if:条件
          number转  boolean 可以  非0为true  0为false
          string转boolean  可以   非空为true  空为false
      switch:
          jdk1.7 string
      for:
         for  in  *****
         var arr=[1,2,3,"aa",true];
           for(index in arr){
             alert(arr[index]);
           }

三.js的内置对象
   1.Number
     var myNum=new Number(value);
     var myNum=Number(value);
           方法:
     toString 把数字转换为字符串,使用指定的基数。 
     valueOf 返回一个 Number 对象的基本数字值。 
   2.Boolean
     var flag=new Boolean(value);    //构造函数
     var flag=Boolean(value);        //转换函数
            方法:
     toString() 把逻辑值转换为字符串,并返回结果。 
     valueOf() 返回 Boolean 对象的原始值。 
   3.String
     new String(s);
     String(s);
            方法
         length 字符串的长度 
         charAt() 返回在指定位置的字符。 
         charCodeAt() 返回在指定的位置的字符的 Unicode 编码。 
         indexOf() 检索字符串。 
         lastIndexOf() 从后向前搜索字符串。 
         split() 把字符串分割为字符串数组。 
         substring() 提取字符串中两个指定的索引号之间的字符。 
         substr() 从起始索引号提取字符串中指定数目的字符。
         toUpperCase() 把字符串转换为大写  
     4.Array
       new Array();
        new Array(size);
        new Array(element0, element1, ..., elementn);
        
        var arr=[];
        var arr=[1,"aa"];
        
        属性:
          length 设置或返回数组中元素的数目。 
         方法:
           join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 
           pop() 删除并返回数组的最后一个元素 
           push() 向数组的末尾添加一个或更多元素,并返回新的长度。 
           reverse() 颠倒数组中元素的顺序。 
           sort() 对数组的元素进行排序 
      5.Date
        var myDate=new Date()
                  方法
            getFullYear() 从 Date 对象以四位数字返回年份 
            getMonth() 从 Date 对象返回月份 (0 ~ 11)。 
            getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 
            getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 
            getTime() 返回 1970 年 1 月 1 日至今的毫秒数。 
            toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。 ****
       6.Math
         var pi_value=Math.PI;
         var sqrt_value=Math.sqrt(15);
                        注释:Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),
                                   像 Math.sin() 这样的函数只是函数,不是某个对象的方法。您无需创建它,通过把 
              Math 作为对象使用就可以调用其所有属性和方法。
                      方法:
            PI 返回圆周率(约等于3.14159)。 
            abs(x) 返回数的绝对值。 
            ceil(x) 对数进行上舍入。 
            floor(x) 对数进行下舍入。 
            round(x) 把数四舍五入为最接近的整数。 
            sqrt(x) 返回数的平方根。 
            pow(x,y) 返回 x 的 y 次幂。 **
            random() 返回 0 ~ 1 之间的随机数。 ***
      7.RegExp
        var reg=new RegExp(pattern);
                   可选参数: attributes
        var reg=/^正则表达式$/
                   属性方法:
         [0-9]:数字
         [A-Z]:A-Z
         [a-z]:a-z
         [A-z]:所有字母(大小写字母)
         \d:代表数值
         \D:非数值
         \w:单词字符
         \W:非单词字符
         \s:查找的空白字符
         \S:查找的非空白字符
         n+:至少一次
         n*:出现0次或多次
         n?:出现0次或1次
         {5}:出现5次
         {2,8}:出现2~8次
                   方法
             test 检索字符串中指定的值。返回 true 或 false 
四.js的函数
   1.js函数定义方式
     A.普通函数
                  语法:
           function 函数名(参数列表){函数体}
                  实例:
           function method(){
              alert("XXX");
           }
           method();
      B.匿名函数(闭包)
          语法:
          var 函数名=function(){}
                   案例:
             var method=function (){
                alert("XXX");
             }
            method();
      C.对象函数(了解)
                   语法:
            new Function(参数1,参数2,参数3);
                   注意点:
            1.形参只能是string类型 ,最后一个只能是函数体
            2.函数体也是string
                    案例:
                var fn=new Function("a","b","alert(a+b)");
                fn(2,22);
     2.函数中的参数问题
       1.形参不用var来修饰
       2.形参和是实参个数可以不一样(只多不少)
              案例:
               function fn(a,b,c){
                    var sum=a+b+c;
                    alert(sum);
                    //arguments 数组内部对参数进行封装的对象
                    for(var i=0;i<arguments.length;i++){
                       alert(arguments[i]);
                    }
                 }
                 
                 fn(1,2,3,4,5);
      3.函数中返回值问题
        1.定义函数的时候不用定义返回值类型  var
        2.返回值可以通过return体现
        案例:
        function fn(a,b){
           return a+b;
         }
         alert(fn(2,3));
      4.js中的全局函数
        1)编码问题
           decodeURI() 解码某个编码的 URI。 
           encodeURI() 把字符串编码为 URI。 
           
           decodeURIComponent() 解码一个编码的 URI 组件。 
           encodeURIComponent() 把字符串编码为 URI 组件。 
           
           unescape() 对由 escape() 编码的字符串进行解码。 
           escape() 对字符串进行编码。 
        
        2)强转
          parseInt()
          parseFloat()
        3)
          Number()
          Boolean()
        4)*****
           eval(); 计算 javascript字符串  把它们作为脚本代码执行

五.js的事件****
        事件
        事件源
        响应行为
   1)事件的绑定方式***
     A.将事件与响应行为内嵌到HTML代码中
        <input type="button" value="button" οnclick="alert('XXX')"/>
     B.将事件内嵌到HTML代码中,将响应行为封装成函数**
        <input type="button" value="button" οnclick="fn()"/>
        <script type="text/javascript">
           function fn(){
             alert('XXX');
           }
        </script>
      C.事件与响应结果完全从HTML分离出来***
         <input type="button" value="button123" id="btn"/>
         <script type="text/javascript">
           var btn=document.getElementById("btn");
           //alert(btn.value);
           btn.οnclick=function fn(){
             alert('XXX');
           }
        </script>
   2)常用的事件
     A.onclick()点击事件
     B.onchange()用户改变域的内容
                 当用户改变域内容会触发该事件
                 实现二级菜单联动
                 案例:  
            <body>
               <select id="city">
                  <option value="bj">北京</option>
                  <option value="tj">天津</option>
                  <option value="sh">上海</option>
               </select>
               <select id="area">
                  <option>昌平区</option>
                  <option>海淀区</option>
                  <option>朝阳区</option>
               </select>
            </body>
            <script type="text/javascript">
                  var city=document.getElementById("city");
                  city.οnchange=function(){
                      var option=city.value;
                     // alert(option);
                     switch(option){
                        case 'bj':
                             var area=  document.getElementById("area");
                             area.innerHTML="<option value='cp'>昌平区</option><option value='hd'>海淀区</option><option value='cy'>朝阳区</option>";
                             break;
                        case 'tj':
                             var area=  document.getElementById("area");
                             area.innerHTML="<option value='tg'>塘沽区</option><option value='nk'>南开区</option>";                 
                             break;
                        case 'sh':
                             var area=  document.getElementById("area");
                             area.innerHTML="<option value='pd'>浦东区</option>";                 
                             break;
                     }
                      
                  }
            </script>     
     C.onblur 元素失去焦点 
       onfocus 元素获得焦点 
                案例:
             <body>
                 <label for="txt">用户名:</label>
                 <input type="text" name="username"   id="txt"/><span id="active"></span>
            </body>
            <script type="text/javascript">
                  var txt=document.getElementById("txt");
                  //元素获取焦点事件
                  txt.οnfοcus=function(){
                     //绑定友好提示
                     var span= document.getElementById("active");
                     span.innerHTML="用户名最少长度是六位";//动态绑定文字
                     span.style.color="green";
                  }
                  //元素失去焦点事件
                  txt.οnblur=function(){
                     //绑定友好提示
                     var span= document.getElementById("active");
                     //alert(txt.value);
                     if(txt.value.length<6){
                         span.innerHTML="对不起您的格式有误";
                         span.style.color="red";
                     }else{
                         span.innerHTML="√";
                         span.style.color="green";
                     }
                  }
            </script>
     D.onmouseout 鼠标从某元素移开 
       onmouseover 鼠标被移到某元素之上 
             案例:
       <body>
             <div id="d1">div</div>
        </body>
        <script type="text/javascript">
             var div=document.getElementById("d1");
             div.οnmοuseοver=function(){
                this.style.backgroundColor="green";
             }
             div.οnmοuseοut=function(){
                this.style.backgroundColor="red";
             }
        </script>
     E.
       onload 某个页面或图像被完成加载 
               等待页面加载完成之后,在执行onload事件里面的代码
               案例:
               <script type="text/javascript">
                    window.οnlοad=function(){
                       var span =document.getElementById("s");
                       span.innerHTML="HELLOJS";
                    }
                </script>
                </head>
                <body>
                     <span id="s"></span>
                </body>
    3)阻止事件的默认行为
      IE:window.event.returnValue=false;(IE低版本)
      w3c:传递过来的事件对象.preventDefault();
      案例:
       <body>
            <!--  <a href="http://www.baidu.com">点击我吧</a> -->
            <!--  <a href="demo1.html" οnclick="fn(event)">点击我吧</a> -->
             <a href="demo1.html" οnclick="return false">点击我吧</a>
        </body>
        <script type="text/javascript">
            function fn(e){
               //IE:window.event.returnValue=false;(IE低版本)
               //w3c:传递过来的事件对象.preventDefault();
               if(e&&e.preventDefault){
                  alert("w3c");
                  e.preventDefault();//return false;
               }else{
                  alert("ie");
                  window.event.returnValue=false;
               }
            }
        </script>
    4)js中的冒泡事件 阻止事件传播
       IE:window.event.cancelBubble=true;//IE低版本
       w3c:传递过来的事件对象.stopPropagation();
       案例:
         <body>
             <div οnclick="fn1()" style="width: 100px; height: 100px; background-color: blue; padding: 50px;">
               <div οnclick="fn2(event)" style="width: 100px; height: 100px; background-color: red;">
                   XXX
               </div>
             </div>
        </body>
        <script type="text/javascript">
           function fn1(){
             window.alert("fn1");
           }
           function fn2(e){
             //window.alert("fn2");
             // IE:window.event.cancelBubble=true;//IE低版本
             // w3c:传递过来的事件对象.stopPropagation();
             if(e&&e.stopPropagation){
                 alert("w3c");
                 alert("fn2");
                 e.stopPropagation();
             }else{
                alert("ie");
                alert("fn2");
                window.event.cancelBubble=true;
             }
           }
        </script>
六.js的BOM
  BOM(浏览器对象模型)
  alert();
  window.alert();
  1)window对象
          弹框方式
                   提示弹框  alert();
                   确认弹框  confirm();
                             确认弹框有返回值:点击确定 true  点击取消(叉) false
                   输入弹框  prompt();
                             输入框有返回值 :点击确定返回输入框的值   点击取消 null  ""
       open()
                  案例:
              window.open("../jsCode/demo1.html");
              定时器
           A.setTimeout(函数,毫秒值); 过多少毫秒值后调用该函数 (只调用一次)
                                 案例:
                   window.setTimeout(function() {
                        alert("XXX");
                    }, 3000);
           B. clearTimeout(参数);
                     案例:
                
               <body>
                  <input type="button" value="button" οnclick="closer()"/>
                </body>
                <script type="text/javascript">
                   /*  window.setTimeout(function() {
                        alert("XXX");
                    }, 3000); */
                    
                    var timer;
                    var fn=function(){
                       alert("XXX");
                       timer=setTimeout(fn, 3000);
                    }
                    var closer=function(){
                        window.clearTimeout(timer);
                    }
                    
                    fn();
                </script>
           C.setInterval(函数,毫秒值);//过多少毫秒之后 重复调用该函数
             clearInterval(参数);清除定时任务
                   案例:
                <body>
                  <input type="button" value="button" οnclick="closer()"/>
                </body>
                <script type="text/javascript">
                   var timer=setInterval(function() {
                         alert("nihao");
                   }, 3000);
                   var closer=function(){
                      window.clearInterval(timer);
                   }
                </script>
       案例:
         注册成功之后,5秒钟跳转到某个页面
      <body>
             恭喜您,终于注册成功了,<span id="s" style="color: red; font-size: 100px;">5</span>秒钟页面自动跳转,如果不跳转<a href="../jsCode/demo1.html">点击这里</a>
        </body>
        <script type="text/javascript">
           var time=5;
           var timer;
           timer=window.setInterval(function() {
                  var span=document.getElementById("s");
                  if(time>=1){
                    span.innerHTML=time;
                    time--;
                  }else{
                     //页面跳转 事件结束
                     window.clearInterval(timer);
                     location.href="../jsCode/demo1.html";
                  }
           }, 1000);
        </script>
       2.location对象
         location.href="链接地址";
         location对象不能省
         window.location.reload();//页面重新刷新
       3.history对象
               历史记录
         back()
         forward()
         go()
               案例:
              <a href="demo8.html">后一页</a>
            <!-- <input type="button" value="上一页" οnclick="history.back()"/>
            <input type="button" value="下一页" οnclick="history.forward()"/> -->
            <input type="button" value="上一页" οnclick="history.go(-1)"/>
            <input type="button" value="下一页" οnclick="history.go(1)"/>
七.js中DOM
  DOM(文档对象模型)****
               文档对象模型:用来操作页面元素
      DOM:document节点
                    作用:通过他对页面元素进行操作和定位
      NODE操作
         1.NODE的元素
           A.元素类型
           B.文本类型
           C.文档类型
           D.属性类型
           E.注释类型
         2.NODE的获取方式
           1)通过元素获取
             document.getElementById("elementid");******
             document.getElementsByName("name");***
             document.getElementsByTagName("input");***
             document.getElementsByClassName("classname");
           2)通过NODE关系获取引用
             document.parentNode;//获取该元素的父节点
             document.childNode;//获取该元素的子节点
             document.firstChild;//获取该元素的第一个子节点
             document.lastChild;//获取该元素的最后一个子节点
             document.nextSibling;//获取该元素的下一个兄弟节点
             document.previousSibling;//获取该元素的上一个兄弟节点
           3)NODE的属性
                                 节点中文              nodeType       nodeName          nodeVale
                                   元素                          1            tagname             null
                                  属性                           2             attr               属性值
                                  文本                           3             #text              文本值
                                  注释                           8             #comment           注释的文字
                                  文档                           9             #document          null
                                  
           4)NODE节点的增删改查
             A.创建一个节点
               1)创建一个元素的节点 document.createElement();  
               2)创建属性节点:object.attr=val;
                            object.setAttribute(sttr,value); 
               3)创建一个文本节点        
                           object.innerTHML=val;
                           object.createTextNode();                   
                                  
             B.添加节点
               1.parentNode.appendChild(newNode);
                                          说明 :
                                                  向节点子节点末尾追加一个新的子节点,   如果文档中存在新的节点 ,将其从文档中删除,重新插入新的节点               
               2.parentNode.insertBefore(newNode,exisingNode);
                                         说明:
                                                 如果文档中存在新的节点 ,将其从文档中删除,重新插入新的节点                    
               3.parentNode.replace(newNode,oldNode);
                                           说明:
                                                 如果文档中存在新的节点 ,将其从文档中删除,重新插入新的节点 
               4.parentNode.removeChild(node);
                                          说明:
                                                  找到 文档中存在 的节点,删除其子节点               
-----------------------------------------------------------------------------------------------
总结:
     1.定位页面
       <input type="text" name="uname" id="txt"/>
       document.getElementById("txt");
       document.getElementsByName("uname");
       document.getElementsByTagName("input");
     2.可以查看和修改属性
       setAttribute(name,value);
       getAttribute(name);
     3.空格换行的处理
                 使用层级关系访问节点
             document.parentNode;//获取该元素的父节点
             document.childNode;//获取该元素的子节点
             document.firstChild;//获取该元素的第一个子节点
             document.lastChild;//获取该元素的最后一个子节点
             document.nextSibling;//获取该元素的下一个兄弟节点
             document.previousSibling;//获取该元素的上一个兄弟节点       
      4.节点的操作
            创建节点: createElement("节点名");
            元素前添加新的节点:insertBefore("新节点","旧节点");
            节点后拼接新节点:appendChild(新节点);
            删除子节点:removeChild(节点);
            克隆节点:cloneNode(deep); //false 只克隆该标签    true  克隆所有标签
            替换节点:replaceChild(新,旧);
      5.NODE操作表格
        table对象中的属性和方法
            属性:rows获取所有行
            方法:
             insertRow(行下标);
             deleteRow(行下标);
         tableRow属性和方法
               属性:
               cells获取所有单元格
               rowIndex:获取行位置下标
              方法:
                 insertCell(单元格下标);
                 deleteCell(单元格下标); 
          tableCell属性和方法
                     属性:
                     innerHTML:设置文本的HTML标签
                     innerText:设置文本内容(纯文本)
                     className:类样式
         小结:
         js可以修改CSS样式
         1)元素对象 setAttribute("style","CSS样式");
         2)通过className绑定CSS样式

 类似资料: