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
原文地址:https://www.cnblogs.com/yankaohaitaiwei/p/11580052.html