zoukankan      html  css  js  c++  java
  • JavaScript的相关知识

    (本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)

     

    一、定义:

    JavaScript:和用户或服务器交互,决定页面的行为;是前端的编程语言,脚本语言,简单易学,基础是HTML+CSS,弱类型语言

    1.编辑工具使用:vscode   sublime  notepad   各个浏览器(辅助性调试代码用)

    2.编写位置:JavaScript代码需要写在<script></script>里,脚本可以放在<head></head>或<body></body>里面

     

    二、JavaScript的输出:

    1.window.alert()  弹框

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6 </head>
     7 <body>
     8 <script type="text/javascript">
     9     window.alert('你被攻击了!!');
    10     //this.alert('测试');
    11     //alert('ceshi');
    12 </script>
    13 </body>
    14 </html>

    2.document.write()  将内容写在HTML中

    3.innerHTML  

    • Object.innerHTML = “HTML”;  设置其内容
    • var html = Object.innerHTML;  获取其内容

    • 点完变变变按钮触发事件:函数fun,函数fun将id为aa的标签内容替换为测试

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6     <script type="text/javascript">
     7     document.write('<h1>icq</h1>');
     8     document.write(Date());
     9     function fun() {
    10         document.getElementById('aa').innerHTML="测试";
    11     }
    12 </script>
    13 </head>
    14 <body>
    15 <div id="aa">我是DIV</div>
    16 <button onclick="fun()">变变变</button>
    17 </body>
    18 </html>

    4.console.log()  写到浏览器的控制台,按F12查看

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6 </head>
     7 <body>
     8 <script type="text/javascript">
     9     a=123;
    10     b=456;
    11     console.log(a+b);
    12 </script>
    13 </body>
    14 </html>
    • 注:单行注释//,多行注释/*    */

     

    三、定义变量时需要注意的事项:

    1.变量必须是以字母开头,使用$或者_也可以,但是不推荐

    2.大小写敏感

    3.定义变量时,推荐使用var,变量需要先定义后使用,在定义时可以用=赋值

    4.一条语句可以定义多个变量  var name=’icq’,age=20,job=’hacker’;

    5.没有初始化的变量,相当于underfined,

     

    四、JavaScript的数据类型:

    1.值类型:string字符串/number数字/boolean布尔/null空/undefined未定义

    2.引用类型:object对象/Array数组/function函数

    • 值类型:

        var x;  未定义

        var=123.12;  数字

        var test=null;  空

        var po=’string’;  字符串

        var fo=true;  布尔

    • 数组类型:

        var Array_te=new Array();

        Array_te[0]=”hello”;

        Array_te[1]=”icq”;

        a=[“hello”,”icq”]

    • 对象:使用一种抽象的概念去描述,对象{属性,方法};

    var car={type:”BYD”,model:500,color:white,do(car的方法也是函数名):function(){“可以跑”};}

      • 针对属性的使用方法:

            name=car.type

            color=car[“color”]  用数组形式调用

      • 针对对象方法的使用:

            调用方法deal=car.do()

    • 值类型的引用
    1 <script type="text/javascript">
    2         var a="car";
    3         var ko=null;
    4         var re="";
    5     window.alert(re);
    6 </script>
    • 数组类型的引用

    这是写出数组yundong1

     1 <script type="text/javascript">
     2     var yundong1=new Array();
     3         yundong1[0]="run";
     4         yundong1[1]="box";
     5         yundong1[2]="play";
     6         yundong1[3]=true;
     7         yundong1[4]=null;
     8  
     9     var yundong2=new Array("run","box","play");
    10  
    11     var yundong3=["run","box","play"];
    12     document.write(yundong1);
    13 </script>
    • 对象类型的引用

     1 <script type="text/javascript">
     2     var person={
     3       name:"hqw",
     4       age:20,
     5       gender:true,
     6       address:"beijing"//属性之间需要使用,
     7     };//此处的分号不要忘记!!!
     8 //对象的使用
     9 
    10       var print_name1=person.name;
    11       var print_name2=person["name"];//点引用
    12   window.alert(print_name1);//下标方式
    13 </script> 
    • 对象类型和函数类型的引用

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5 </head>
     6 <body>
     7     <p id="test"></p>
     8     <script type="text/javascript">
     9         var person={
    10         fname:"h",
    11         lname:"qw",//前面两个都为属性
    12         allname/*allname是函数*/:function() {
    13                         //定义的函数,是person对象的动作、行为或方法
    14              return this.fname+" "+this.lname;
    15         },
    16         eat:function(){
    17             alert('eat');//document.write('<h1>eat</h1>');
    18             }
    19         };
    20         document.getElementById('test').innerHTML=person.allname();//调用方法
    21         document.getElementById('div').innerHTML=person.eat();
    22     </script>
    23     <div id="div"></div>
    24 </body>
    25 </html>

     

    五、函数的定义和使用

    格式:function 函数名(参数){函数体}

    1.无参函数

    1 function fun(){
    2     语句体;
    3     }

    2.有参函数

    1 function fun(a,b){
    2     函数体;//体现对a和b的处理
    3     }
    • 有参函数的引用

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6 </head>
     7 <body>
     8     <button onclick="myfun('Tom','China')">点击这里</button>
     9     <!--onclick事件 -->
    10    <script type="text/javascript">
    11         function myfun(name,place){ //定义函数
    12             alert("Welcom "+name+" to "+place);
    13         }
    14     </script>
    15 </body>
    16 </html>

    3.有返回值函数

    1 function fun(){
    2     return;  返回结果
    3     }    
    • 有返回值参数的引用

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5 </head>
     6 <body>
     7     <div id="add"></div>
     8     <!-- 解析是由上到下的,所以add得在上面 -->
     9     <script type="text/javascript">
    10         function add(a,b) {
    11             return a+b;
    12         }
    13         document.getElementById('add').innerHTML=add(100,200);
    14     </script>
    15 </body>
    16 </html>

     

    六、变量分类(根据变量的作用范围来分)

    1.局部变量:在函数内部申明的变量,只能在函数内部去使用

    2.全局变量:函数外部申明的变量,网页上所有的脚本和函数均可使用调用它

    • 当alert(a)时:

    • 当alert(b)时:

    1 <script type="text/javascript">
    2 var a="test1";    //a是全局变量,b是局部变量
    3 function stringb() {
    4 var b="test2";
    5 document.write(a);
    6 }
    7 // document.getElementById('test').innerHTML=stringb();
    8 alert(a);//这里写a,会弹出窗口;而写b却弹不出来
    9 </script>

     

    七、字符串的处理

    1.字符串需要使用’’或””括起来,可以使用下标的方式去访问字符串中每个字符

    1 <script type="text/javascript">
    2 var a="string";
    3 alert(a[0]);
    4 </script>

    2.转义字符

    字符串中的特殊字符若需要打印出来,需要用转义字符,转义就是让字符保持其原有的含义,而不被当中特殊字符去使用

    • 特殊字符:’  “        =tab      回车     退格符      f换页
    • 使用string.length获取字符串长度,其中转义字符不算

    3.字符串可以被当作对象,创建对象  var s=new string(‘test’); <==> s=’test’;

    4.常用的属性:length  prototype(允许向对象添加属性和方法)

    5.常用的方法:

    • charAt() 返回指定索引位置的字符
    • IndexOf()  返回指定字符的索引
    • split()  分割,能够将字符串分割为字符串数组,如:a.split((1)[0][0]) 
    • substr(n)  截取字符串,把前n个字符去掉
    • substring(a,b)  截取a和b之间的字符串,包左不包右
    • tostring()  将对象转换为字符串
    • toLowerCase() 转小写
    • toUpCase()  转大写

     

    八、JavaScript的运算符

    1.算数运算符:

    • 加  +
    • 减  -
    • 乘  *
    • 除  /
    • 取余  %
    • 自增  ++
    • 自减  --

    2.赋值运算符:

    • =  赋值
    • +=  a=a+3  a+=3
    • -=  a=a-3  a-=3
    • *=  a=a*3  a*=3
    • /=  a=a/3  a/=3
    • %=  a=a%3  a%=3

    3.连接符号:+,将多个变量拼接在一起

    A=”我”; B=”是”;C=”谁”;

    A+B+C

    4.比较运算符:

    • ==  等于  x==8  只比较大小
    • ===  恒等于  值大小和类型均一样
    1 <script type="text/javascript">
    2     var a=10;
    3     var b="10";
    4     if (a===b) {alert("yes");}
    5 </script>
    • !=  不等于

    • >  大于

    • <  小于

    • >=  大于等于

    • <=  小于等于

    5.逻辑运算符:

    • &&<==>and  与  1>0&&9>8 ==> true
    • ||<==>or  或  1>0||1==0 ==> true
    • !<==>not  非  1!=2 ==> ture

     

    九、条件判断

    1.if(条件) {语句体;}

      在浏览器中弹出11

    1 <script type="text/javascript">
    2     function panduan(a) {
    3         if (a>10) {
    4             return a;
    5         }
    6     }
    7     alert(panduan(11));
    8 </script>

    2.if(条件) {语句体1;} else {语句体 2;}

      在浏览器中弹出9

     1 <script type="text/javascript">
     2     function panduan(a) {
     3         if (a>10) {
     4             return a;
     5         }
     6         else{
     7             a++;
     8             return a;
     9         }
    10     }
    11     alert(panduan(8));
    12 </script

    3.if(条件1) {语句体1;} else if(条件2) {语句体2;} else{语句体3;}//else if可以有多个

     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     function time_te(time) {
     4         if (time>=6&&time<=10) {
     5             document.write("早上好!");
     6         }
     7         else if (time>=12&&time<=13) {
     8             document.write("中午好!");
     9         }
    10         else if (time>=13&&time<=17) {
    11             document.write("下午好!");
    12         }
    13         else{
    14             document.write("此刻,你该睡觉了!");
    15         }
    16     }
    17 var d=new Date();
    18 var time=d.getHours();
    19 time_te(time);
    20 </script>

    4.switch

     

     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     var d=new Date();
     4     var dd=d.getDay();
     5     switch(dd){
     6         case 0:
     7         document.write('周日');
     8         break;
     9         case 1:
    10         document.write('周一');
    11         break;
    12         case 2:
    13         document.write('周二');
    14         break;
    15         case 3:
    16         document.write('周三');
    17         break;
    18         default:
    19         document.write('周周');
    20     }
    21 </script>

     

    十、循环

    1.for循环:

    for(在循环开始前执行(初始化的值);执行的条件;在循环后执行) {执行的语句体}

    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     var str="ichunqiu";//,i=0注意这是for()的第一部分,可以提前去申明并且要初始化
    4     for (var i=0;i<str.length;i++) {
    5         document.write(str[i]+"<br>")
    6         //i++;这是for()的第三部分,可以放在语句体中
    7 }
    8 </script>
    • 如果要遍历对象:var person{name:”icq”,age:10,address:”beijing”},需要使用in,具体用法如下:

     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     var str="ichunqiu";
     4     for (var i=0;i<str.length;i++) {
     5         document.write(str[i]+"<br>")
     6     }
     7     var person={name:"icq",age:10,address:"beijing"};//对象
     8     var x,print="";
     9     for (x in person) {//x可以理解为对象的键
    10         print+=person[x];
    11     }
    12     document.write(print);
    13 </script>

    2.while循环:

    while(条件){语句体;}//先去判断条件,条件满足了,才会执行语句体

    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     var i=1,sum=0;
    4     while(i<=100){
    5         sum+=i;
    6         i++;
    7     }
    8     document.write(sum);
    9 </script>

    3.do while循环

    do {语句体;} while(条件)//先去执行语句体,在去判断条件

     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     var i=1,sum=0;
     4     do{
     5         sum+=i;
     6         i++;
     7     }
     8     while(i<=100)
     9     document.write(sum);
    10 </script>

    4.break和continue的比较

    • break是跳出整个循环

    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     for (var i=0;i<10;i++) {
    4         if (i==3) {
    5             break;
    6         }
    7         document.write("本次数字为:"+i+"<br>");
    8     }
    9 </script>
    • continue是跳出当前次循环,依然会执行后续的循环

    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     for (var i=0;i<10;i++) {
    4         if (i==3) {
    5             continue;
    6         }
    7         document.write("本次数字为:"+i+"<br>");
    8     }
    9 </script>

     

    十一、在JS中判断数据类型

    • 使用typeof()判断//()可选
     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     var i="str";
     4     document.write(typeof(i));
     5 </script>
     6  //判断数组
     7 <meta charset="utf-8">
     8 <script type="text/javascript">
     9     var i={name:"icq",age:20};
    10     function add() {
    11     }
    12     var bb=new Array();//数组在本质上就是对象
    13     document.write(typeof(i));//add//dd
    14 </script>

     

    十二、类型转换

    1.String(1)将数字转换为字符串

    2.x.toString()//x是对象或其他类型的数据,将其转换为字符串

    3.Number()将布尔或其他类型的数据转换为数组

    • NaN不是数字

    十三、正则表达式

    1.定义:用单个字符串描述或者匹配符合特定语句规则的字符串(相当于一种搜索模式),一些字符序列组合在一起,可以简单也可以是复杂模式的,可以去搜索还可以替换

    2.语法:/表达式/修饰符(针对表达式做修饰,可选)

      var para=/icq/i;//i表示不区分大小写

      icq iCQ

    3.JavaScript中的使用:

    • 使用search(),做搜索
    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     var str="I'm a Hacker";
    4     var n=str.search(/hacker/i);//n返回出来的是匹配的字符串的索引值
    5     document.write(n);
    6 </script>
    • 使用replace(),做替换

      • 点击“点我按钮”

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5 </head>
     6 <body>
     7 <p>替换“icq”为“pentest”:</p>
     8 <button onclick="myFunction()">点我</button>
     9 <p id="demo">Visit icq!</p>
    10 <script type="text/javascript">
    11     function myFunction() {
    12         var str = document.getElementById('demo').innerHTML;//这里是取值,没有p标签
    13         console.log(str);
    14         var txt = str.replace(/icq/i,"pentest");
    15         document.getElementById("demo").innerHTML = txt;
    16     }
    17 </script>
    18 </body>
    19 </html>

    4.修饰符:i  忽略大小写  g  全局匹配:查找所有的匹配  m  多行匹配

    5.正则表达式中常用的模式:

    • [abc]匹配abc中的任意一个字符
    • [0-9]匹配0-9中之间任意一个数字
    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     var str = "icq4de&_d6De";
    4     var n = str.search(/[0-9]/g);//显示的值是第一次匹配的
    5     document.write(n);
    6 </script>
    • (x|y)  查找任意以|(管道符)分割的选项

    6.元字符(具有特殊含义的字符):

      d  表示数字

      s  表示空白字符

        匹配单词边界

      uXXXX(x是16进制的字符)  unicode的字符

    7.量词:

      n+  至少匹配一个n

      n*  匹配0个或多个n

      var str=”a123”;  var str=”123”;也可匹配上,0个

      n?  匹配0个或者1个n

    8.使用函数test():

    • 它是正则表达式的方式  var para="/test/i";
    • para.test(要匹配的是完整的、原始的字符),test检测字符串中是否有我们想要的结果
    • 如果找到返回true,找不到返回false
    1 <script type="text/javascript">
    2     var pa=new RegExp("o");//该对象定义了属性和方法的正则表达式//o是实例化的过程,也可以理解为new对象//正则最后和Exp结合使用
    3     document.write(pa.test("test o pentesto"));
    4 </script>

    9.函数exec() :

    • 用来查找,该函数的返回值是数组,其中存放的是匹配的结果(匹配的结果是第一个)

    1 <meta charset="utf-8">
    2 <script type="text/javascript">
    3     var pa=new RegExp("o");
    4     document.write(typeof(pa.exec("test o pentesto")));
    5 </script>

    <meta charset="utf-8">
    <script type="text/javascript">
        var pa=new RegExp("o");
        document.write(pa.exec("test o pentesto")[0]);//[1]使用数组打印第二个,打印不出来
    </script>

    十四、JavaScript错误的处理:

    1.语法:

    2.举例:

     1 <meta charset="utf-8">
     2 <script type="text/javascript">
     3     var txt="";
     4     function message() {
     5         try{
     6             adddlert("Welcome!!");//将可能会出问题的代码放在try里面
     7         }
     8         catch(e){//把错误信息赋值给e,e为对象
     9             txt='有错误。
    
    ';
    10             txt+='错误描述:'+e.message+'
    
    ';//把message抛给e
    11             txt+="点击确定。
    
    ";
    12             alert(txt);
    13         }
    14     }
    15 </script>
    16 <input type="button" name="bu" value="点我" onclick="message()">

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 <p>不管输入是否正确,输入框都会在输入后清空。</p>
     9 <p>请输入5~10之间的数字:</p>
    10 
    11 <input id="demo" type="text">
    12 <button type="button" onclick="myFunction()">点我</button>
    13 
    14 <p id="p01"></p>
    15 
    16 <script type="text/javascript">
    17     function myFunction() {
    18         var message,x;
    19         message = document.getElementById('p01');
    20         message.innerHTML = "";
    21         x = document.getElementById('demo').value;
    22         try {
    23             if (x == "") throw "值是空的";
    24             if (isNaN(x)) throw "值不是一个数字";
    25             x = Number(x);
    26             if (x > 10) throw "太大";
    27             if (x <= 5) throw "太小";
    28         }catch(err){
    29             message.innerHTML = "错误:" + err + "";
    30         }finally {
    31             document.getElementById("demo").value = "";
    32         }
    33     }
    34 </script>
    35 
    36 </body>
    37 </html>
    shuzi.html
    • throw  允许用户创建自定义错误,自定义的异常信息
    • 注:cach(e){}中的e就是用户自定义的错误,不需要使用e.message

    十五、JavaScript的操作表单

    • var data=document.forms["myform"]["myname"].value;//获取名称为myform表单,

      然后操作名称为myname的输入框

    举例:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6     <script type="text/javascript">
     7         function check_form() {
     8             var data=document.forms["myform"]["myname"].value;//获取名称为myform表单,然后操作名称为myname的输入框
     9             //document表示整个页面,针对form表单进行操作,二维数组的形式
    10             if (data==null||data=="") {
    11                 alert("请输入名字!!");
    12                 return false;
    13             }
    14             else{
    15                 return true;
    16             }
    17         }
    18     </script>
    19 </head>
    20 <body>
    21 <form name="myform" action="add.php" method="get" onsubmit="return check_form()">
    22     姓名:
    23     <input type="test" name="myname">
    24     <input type="submit" value="提交">
    25 </form>
    26 </body>
    27 </html>
    mingzi.html

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <meta charset="utf-8">
     6     <script type="text/javascript">
     7         function checkfrom(argument) {
     8             var x=document.forms["myform"]["email"].value;
     9             var index_k=x.indexOf("@");
    10             var index_o=x.indexOf(".");
    11             if (index_k<1||index_o<index_k+2||index_o+2>=x.length) {
    12                 alert("E-mail格式不合法");
    13                 return false;
    14             }
    15             }
    16     </script>
    17 </head>
    18 <body>
    19 <form name="myform" action="test.php" method="post" onsubmit="return checkfrom()">
    20     邮箱:
    21     <input type="text" name="email">
    22     <input type="submit" value="提交">
    23     
    24 </form>
    25 </body>
    26 </html>
    youxiang.html

    十六、简单的前端页面截持

    • 点击图片后,进入了我的博客首页

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title></title>
     5     <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
     6     <script type="text/javascript">
     7   $(function(){
     8     $("a").each(function(){
     9       $(this).click(function(){
    10         window.open('https://www.cnblogs.com/yankaohaitaiwei/');
    11       });
    12     });
    13   });
    14 </script>
    15 </head>
    16 <body>
    17     <table>
    18         <tr>
    19             <td>
    20                 <a href="">
    21                 <img src="http://www.07073.com/uploads/110414/845972_133840_1.jpg">
    22                 </a>
    23             </td>
    24         </tr>
    25     </table>
    26 </body>
    27 </html>
    jiechi.html
  • 相关阅读:
    JS,JQuery的扩展方法
    Listbox简单用法
    Button模板,样式
    WPF开发经验
    弹出窗体主体实现事件
    从一知半解到揭晓Java高级语法—泛型
    深入理解Java之装箱与拆箱
    探究 — 二叉搜索树
    深入理解二叉树(超详细)
    二分查找及其变种算法
  • 原文地址:https://www.cnblogs.com/yankaohaitaiwei/p/11580052.html
Copyright © 2011-2022 走看看