JavaScript学习笔记

一、概述
JavaScript是一种脚本语言,它的目标程序是以普通文本形式保存。JS运行在浏览器当中,浏览器中有执行JS代码的内核。与JAVA并无关系。
JavaScript主要用来操作HTML中的节点,产生动态效果。它是一门编程语言。
核心语法:ECMAScript
二、嵌入JS代码的方式
第一种:行间事件。

<html>
    <head>
    </head>
    <body>
        <!--1、用户点击按钮显示对话框
            2、Java是事件驱动型编程语言,通常都是发生某个事件的时候去执行某段代码。在JS中,事件都会对应事件句柄
            3、所有的事件句柄都是以标签的属性形式存在。
            只要有用户点击了下面的按钮对象,此时按钮对象上发生鼠标单击事件。那么注册在onclick事件句柄当中的JS代码
            就会被执行。onclick后面代码实际上是浏览器负责执行的。
            4、onclick后面的代码并不是在浏览器打开的时候就执行。等待该按钮的click事件发生,
            只要发生,后面的代码就被监听器调用
            5、在JS当中有一个内置BOM对象,可以直接拿来用,全部小写:window
            其中window对象有一个方法(函数)叫alert,这个函数专门用来弹对话框。
            6、JS代码可以以分号结尾,也可以不以分号结尾。
            7、window可以省略
    -->
        <input type="button"  value="xiaoke"   onclick="window.alert('我爱小可');" />
        <input type="button"  value="xiaoke2"   onclick="alert('我爱小可2');" />
    </body>
</html>

第二种:脚本块方式。

<html>
 <head>


 </head>
 <body>
     <script type="text/javascript">
/*在这里直接编写JS代码,这些代码在页面打开的时候自上而下的顺序依次执行*/
       alert('hello Kero');
       alert('hello kero 2');
       alert('hello kero 3');


     </script>
 </body>


</html>

第三种:引入外部独立的JS文件

<script type="text/javascript" src="js/xxx.js">
     </script>
xxx.js代表JS文件名。

标识符命名规则和规范按照Java执行。
三、JS中的变量
声明:var 变量名;
赋值:变量名 = 值;
JS语言是弱类型语言,没有编译阶段,直接打开浏览器打开解释执行,在JS中声明变量时不需要指定变量的数据类型,程序在运行过程当中,赋什么类型的值,变量就是什么数据类型,并且变量的数据类型是可以变的。
全局变量:在函数体之外声明的变量。全局变量在浏览器打开的时候分配空间,在浏览器关闭时才销毁。
局部变量:在函数体当中声明的变量。局部变量在函数被调用的时候分配空间,函数执行结束后,内存释放。
四、函数

<html>
 <head></head>
 <body>
     <script type="text/javascript" >
       /*  
       函数定义语法格式:
       function 函数名(形参列表){
           函数体;
       }
        例子:function sun(a,b){
            return a+b;
        }
        等价于:
        sun=function(a,b){
            return a+b;
        }
       */
    function sun(a,b){
            alert(a+','+b);
        }
        sun(1,2);
     </script>
 </body>


</html>

JS中函数不能重载,只要出现同名函数,前面的函数就消失了。
五、JS数据类型
typeof运算符:可以在JS代码运行过程中,动态的获取变量的数据类型。
语法格式:typeof 变量名;
运算结果是以下六个字符串之一:undefined,boolean,string,number,object,function。
JS中判断两个字符串是否相等,用‘==’。
undefined类型:只有一个值,就是undefined,当声明变量没有赋值,系统默认为undefined。
null类型:只有一个值,就是null,typeof null运算结果是:object。
number类型:属于原始类型,整数、浮点数都属于number,还有NaN(表示不是一个数字),Infinity。有一个函数叫isNaN(),这个函数最终返回类型是布尔类型,返回false表示是一个数字,返回true表示不是一个数字。还有一个函数叫Number(),可以将不是数字类型的数据转换为数字类型的数据。parsetInt()函数可以将字符串转换为数字并且只取整数位,可以用来向下取整。
boolean类型:属于原始类型,只有两个值,true和false,有一个函数叫Boolean(),可以将不是布尔类型的变量转换为布尔类型。
string类型:属于原始类型,定义string类型有两种方式:var s=“字符串”; var s = new string(“字符串”);
length属性可获取字符串长度;
object类型:可以将object类型看作是所有对象的超类,在JS当中默认定义的类型,没有特殊说明的话,默认继承object。prototype属性可以给对象动态扩展属性和方法。
JS中怎么定义类new对象调方法:定义类有两种方式:
1、function 类名(形式参数列表){
this.属性名=参数;
this.方法名 =function(){}
}
2、类名=function (形式参数列表){
this.属性名=参数;
this.方法名 =function(){}
}

<html>
<head></head>
<body>
<script type="text/javascript" >
    function emp(x,y,z){
        //属性
        this.empno=x;
        this.ename=y;
        this.sal=z;
         //方法
        this.work=function(){
            console.log(this.ename+"is working");
        }
    }
    //创建对象
    var e = new emp();
    e.work();
    var e2 = new emp(111);
    e2.work();
    var e3 = new emp(2222,"king");
    e3.work();
    var e4 = new emp (333,'S',800)
    //给emp动态扩展方法
    emp.prototype.getSal = function(){
        return this.sal;
    }
    console.log(e4.getSal());
</script>
</body>
</html>

==,只比较值是否相等
===,既比较值,也比较数据类型是否相等
六、事件
blur:失去焦点
focus:获得焦点

click:鼠标单击
dbclick:鼠标双击

keydown:键盘按下
keyup:键盘弹起

mousedown :鼠标按下
mouseover :鼠标经过
mousemove:鼠标移动
mouseout:鼠标离开
mouseup:鼠标弹起

submit: 表单提交
reset:表单重置

select:文本被选定
change:下拉列表中项改变,或文本框内容改变
load:页面加载完毕
任何一个事件都有对应的事件句柄,事件句柄是在事件名称前添加on。

<html>
<head>
    <style type="text/css">
 input{
     border: 1px solid black;
     width: 300px;
}
    </style>
</head>
<body>
<script type="text/javascript" >
</script>

测试失去焦点事件:<input type="text" onblur="console.log('失去')"/>;
测试获得焦点事件:<input type="text" onfocus="console.log('获取')" />;
测试click事件:<input type="button" value="click" onclick="console.log('单击')"/>;
测试dbclick事件:<input type="button" value="dbclick" ondblclick="console.log('双击')">;

</body>
</html>

事件注册的第一种方式:

<html>
<head>
    <style type="text/css">
  
    </style>
</head>
<body>
<script type="text/javascript" >
  function sayhello(){
      console.log("hello kero")
  }
</script>
  <!--这种注册事件的方式就是第一种方式,在标签中使用事件句柄,在事件句柄后编写JS代码,当事件句柄对应的事件发生之后
注册在事件句柄当中的代码被调用。
onclick只有当click事件发生之后,注册在onclick后的代码会被执行。
-->
    <input type="button" value="hello kero" onclick="sayhello()"/>
</body>
</html>
第二种方式:
<html>
<head>
    <style type="text/css">
  
    </style>
</head>
<body>
    <input type="button" value="hello" id="hellobtn" onclick="" >
<script type="text/javascript" >
    function sum(){
        console.log("sum");
    }
/*根据id获取button对象*/
         var hellobtnElt = document.getElementById("hellobtn");
        //元素有什么属性,就能点什么
        /* 这行代码在页面打开的时候会执行,这行代码的执行意义是,将sum这个回调函数绑定到hellobtn的click事件上*/
        
        hellobtnElt.onclick = sum;
 
</script>
</body>

</html>
事件案例:
<html>
<head>
</head>
<body>    
<script type="text/javascript" >
  window.onload = function(){
      //给id="btn1"的元素绑定鼠标单击
      var btn1Elt=document.getElementById("btn1");
    btn1Elt.onclick = function(){
        console.log("1被单击");
    }
    //给id="btn2"的元素绑定鼠标单击
    var btn2Elt=document.getElementById("btn2");
    btn2Elt.onclick = function(){
        console.log("2被单击");
    }
  } 
</script>
   <input type="button" id="btn1" value="button1"/>
   <input type="button" id="btn2" value="button2"/>
</body>
</html>

七、void运算符、JS控制语句、内置对象
语法格式:void (表达式)
执行表达式,不返回任何结果,即使表达式有执行结果,但是经过void后就什么都没了。
选择结构:if,switch
循环结构:for ,while,do…while
转向语句:break,continue,return
JS种特殊语句(不常用):
for…in语句
with语句

<html>
<head>
</head>
<body>
<script type="text/javascript" >
    //数组建立使用中括号
  var arr = [1,24,5,65,76,7];
  //for....in语句
   for(var index in arr){
       //index是数组元素中的下标
       console.log(index);
       //console.log(arr[index]);
   }
   //for...in语句还可以取对象的属性值
   Employee = function(empno,ename){
       this.empno=empno;
       this.ename=ename;
   }
   var e = new Employee(700,'kero');
   console.log(e.empno+','+e.ename);


</script>
</body>
</html>
内置对象array:
<html>
<head>
</head>
<body>
<script type="text/javascript" >
 /*
 1、怎么创建数组对象
 2、怎么遍历数组
 3、怎么修改数组中的某个元素
 4、怎么读取数组中的某个元素 
 */
//创建数组的第一种方式
var a=[1,2,3,4,5];
//创建数组的第二种方式
var arr= new Array(5);//创建长度为5的数组
var arr2 = new Array(1,2,3,4,5);
</script>
</body>
</html>
添加元素:数组名.push(添加元素)并且是添加到末尾。
pop():将数组末尾元素弹出,并且长度减一。
reverse():翻转数组。
内置对象date:
var time =new Date();

八、DOM编程案例
BOM是浏览器对象模型:通过BOM的对象和方法可以完成浏览器窗口的操作。顶级内置对象是window。
DOM是文档对象模型:通过DOM对象和方法,可以完成网页中元素的增删改,产生动态效果,顶级内置对象是document。
innerHTML和innerText的区别:

<html>
<head>
  <style type="text/css">
 #div1{
     background-color: antiquewhite;
     border: 1px solid red;
     width: 200px;
 }


  </style>
</head>
<body>
    <script type="text/javascript">
    window.onload = function(){
        document.getElementById("btn").onclick = function(){
            //设置div中的内容
           var divElt= document.getElementById("div1");
           //通过元素的innerHTML属性来设置内部的内容
           //innerHTML属性会将后面的字符串当作一段HTML代码来解释并执行
           //divElt.innerHTML = "<font color ='red'>  用户名不能为空</font>";
           //innerText会看作普通的字符串,不会解释执行。
           divElt.innerText = "<font color ='red'>  用户名不能为空</font>";
        }
    }    
    </script>
    <input type="button" id="btn" value="ssss"/>
<div id="div1">
</div>
<span id="span1">
</span>
</body>
</html>
复选框的全选和取消全选:
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
    <script type="text/javascript" >
        window.onload = function(){
            //给id="firstChk"元素绑定click
           var firstChkElt= document.getElementById("firstChk");
           firstChkElt.onclick = function(){
              //获取所有的复选框对象
              var vtb = document.getElementsByName("vtb");
              if(firstChkElt.checked){
//遍历数组
for(var i =0 ;i<vtb.length;i++){
                  var vtbChk = vtb[i];
                  vtbChk.checked = true
              }
              }else{
                  //遍历数组
              for(var i =0 ;i<vtb.length;i++){
                  var vtbChk = vtb[i];
                  vtbChk.checked = false;
              }
              }
           }
        }
    </script>
    <input type="checkbox" id="firstChk">
    <br>
    <input type="checkbox" name="vtb" value="xiaoke"/>xiaoke
    <br>
    <input type="checkbox" name="vtb" value="az"/>az
    <br>
    <input type="checkbox" name="vtb" value="nanami"/>nanami
    <br>
</span>
</body>
</html>
获取文本框的value:
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
    <script type="text/javascript" >
 window.onload= function(){
     document.getElementById("btn").onclick = function(){
         //获取文本框对象
         var usernameElt =document.getElementById("username");
         //获取value
         var username = usernameElt.value;
         alert(username);
     }
 }
    </script>
    用户名:<input type="text" id="username"/>
    <br>
    <input type="button" id="btn" value="xiaoke">
</span>
</body>
</html>
获取下拉列表选中项的value:
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
  <select id="iiii" onchange="alert(this.value)"><!--代表当前下拉列表对象-->
      <option value="">数字</option>
      <option value="001">1111</option>
      <option value="002">2222</option>
      <option value="003">3333</option>
      <option value="004">4444</option>
  </select>


    <script type="text/javascript">
        window.onload = function(){
            document.getElementById("iiii2").onchange = function(){
                alert(this.value)
            }
        }
    </script>


  <select id="iiii2" >
    <option value="">数字</option>
    <option value="001">1111</option>
    <option value="002">2222</option>
    <option value="003">3333</option>
    <option value="004">4444</option>
</select>
</span>
</body>
</html>
周期性调用函数、网页时钟:
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
<script type="text/javascript">
    window.onload = function(){
    document.getElementById("displayTimeBtn").onclick= function(){
        //返回值是一个可以取消周期性调用的value
      v= window.setInterval("displayTime()",100)
    }
    document.getElementById("stoptimeBtn").onclick= function(){
       window.clearInterval(v);
    }
    }
  function displayTime(){
       //获取系统当前时间,把时间显示到div中
       var nowTime = new Date();
        //显示到div
        document.getElementById("timediv").innerHTML = nowTime.toLocaleString();
  }


    //window.setInterval("display()",100);
</script>


<input type="button" value="showtime" id="displayTimeBtn">
<input type="button" value="stop" id="stoptimeBtn">
<div id="timediv" ></div>
</body>
</html>

九、BOM编程案例
窗口的开启和关闭:

<html>
<head>


</head>
<body>


     <input type="button" value="开启百度" onclick="window.open('http://www.baidu.com')"/>
     <input type="button" value="开启百度2" onclick="window.open('http://www.baidu.com' ,'_self')"/>


     <input type="button" value="关闭窗口" onclick="window.close()"/>


</body>
</html>

alert和confirm:
alert:弹出消息框
confirm:弹出确认框
十、JSON

<html>
<head>
</head>
<body>
    <script type="text/javascript">
        /*
        1、JSON:JavaScript Object Notation(JavaScript标记对象)
        是一种轻量级的数据交换格式。
        体积小,但表示的数据可以很多。
        JSON和XML都是标准的数据交换格式。XML体积大,解析难度大。JSON语法相对松散。
        2、在JavaScript中JSON是以对象的形式存在
        3、在JavaScript定义JSON格式对象:
        语法格式:
        var jsonObj = {
            “属性名”:属性值,
            “属性名”:属性值,
            “属性名”:属性值,
            “属性名”:属性值,
            ......
        };
        */
  var emp = {
      "empno":7379,
      "ename":"xiaoke",
      "sal":9999
  }//怎么访问对象属性
  console.log(emp.empno)//第一种方式
  console.log(emp["empno"])//第二种方式
  
    </script>
</body>


</html>

1、Java和JavaScript怎么交换数据?
可以用JSON格式的字符串。
2、JDBC连接数据库查询数据,然后将数据拼接成JSON格式的字符串。
将JSON格式的字符串传给JavaScript,然后JavaScript当中把json格式字符串转换成JSON对象,就完成了数据交换。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingshengda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值