JavaScript

JavaScript简称JS, 作用:负责给页面添加动态效果

该语言和Java没有关系,为了蹭Java的热度

语言特点

  1. 属于脚本语言,不需要编译直接解析执行
  2. 属于弱类型语言,变量的赋值不限制类型
  3. 基于面向对象,和面向对象语言类似
  4. 安全性高, JavaScript语言只能访问浏览器内部的数据, 浏览器以外的(磁盘上的数据)不允许访问.
  5. 交互性强:由于直接嵌入到html页面中,该语言是在客户端浏览器中执行,可以直接和用户进行交互,而java语言还需要经过网络请求才能和用户交互.

在HTML页面中如何添加JS代码

内联: 在标签的事件属性中添加js代码, 当事件触发时执行.

  1. 事件:系统提供的一些特定时间点.
  2. 点击事件: 当按钮被点击时 点击事件会触发,写到点击事件内部的代码就会执行.
  1. <input type="button" value="按钮内联" onclick="alert('内联成功!')">

内部:在html页面中的任意位置添加script标签,在标签体内写js代码

  1. <!--内部引入方式,建议写在</body>的上面-->
  2. <script>
  3. alert("内部成功!");
  4. </script>

外部:在单独的js文件中写js代码,在html页面中 通过script标签引入

  1. <!--引入外部js文件-->
  2. <script src="my.js"></script>

JavaScript语法

变量,数据类型,运算符,各种语句,方法声明,面向对象

变量

JavaScript语言属于弱类型语言

JavaScript: let x =10; let s=”abc”; x=”abc”;不会报错 let p = new Person()

弱类型的本质,就是一个变量赋值运行后 还可以更改类型

  • let和var的区别:

    • 用let声明变量 作用域比较局限
    • 用var声明变量 不管在什么位置都是声明的全局变量

数据类型

JavaScript不分基本数据类型和引用类型, 统称对象类型

几种常见的对象类型

  • 数值: number
  • 字符串: string
  • 布尔值: boolean true/false
  • undefined: 未定义类型 , 当变量只声明不赋值时 变量为未定义类型
  • 获取变量类型的方法 typeof 变量
  • NaN: Not a Number: 不是一个数
  • null: 空

运算符

  • 算术运算符: + - * / % , 除法会自动转换整数或小数
  • 关系运算符: > < >= <= != == ===

    • ==: 先统一等号两边类型 再比较值 “666”==666 true
    • ===:先比较类型,类型相同之后再比较值 “666”===666 false
  • 逻辑运算符: && || !
  • 赋值运算符: = += -= *= /= %= ++ —
  • 三目运算符: 条件? 值1 : 值2

各种语句

for

  1. for (var i=0;i<cars.length;i++){
  2. document.write(cars[i] + "<br>");
  3. }

if

  1. if (time<20){
  2. x="Good day";
  3. }

if…else

  1. if (time<20){
  2. x="Good day";
  3. }else{
  4. x="Good evening";
  5. }

if…else if…else

  1. if (time<10){
  2. document.write("<b>早上好</b>");
  3. }else if (time>=10 && time<20){
  4. document.write("<b>今天好</b>");
  5. }else{
  6. document.write("<b>晚上好!</b>");
  7. }

switch

  1. switch(n){
  2. case 1:
  3. 执行代码块 1
  4. break;
  5. case 2:
  6. 执行代码块 2
  7. break;
  8. default:
  9. case 1 case 2 不同时执行的代码
  10. }

while

  1. while (i<5){
  2. x=x + "The number is " + i + "<br>";
  3. i++;
  4. }

do/while

  1. do{
  2. x=x + "The number is " + i + "<br>";
  3. i++;
  4. }while (i<5);

break 和 continue

break 语句用于跳出循环。

continue 用于跳过循环中的一个迭代。

方法声明

格式

js格式: function 方法名(参数列表){方法体}

声明常见的四种方法:

  • 无参无返回值
  • 无参有返回值
  • 有参无返回值
  • 有参有返回值

JavaScript中声明方法的三种方式

  • function 方法名(参数列表){方法体}
  • let 方法名 = function(参数列表){方法体}
  • let 方法名 = new Function(“参数1”,”参数2”,”方法体”);

和页面相关的方法

  1. 通过元素的id获取元素对象
    1. let d = document.getElementById("id");
  1. 获取和修改元素的文本内容 ```javascript d.innerText //获取

d.innerText = “xxx”; //修改

  1. 3.
  2. 获取和修改文本框的value
  3. ```javascript
  4. let i = document.getElementById("i1");
  5. i.value="xxx"; //修改
  6. i.value 获取
  1. 获取和修改元素的html内容 ```javascript d.innerHTML //获取

d.innerHTML=”xxx” //修改

  1. <a name="3b7ede3d"></a>
  2. # JavaScript对象分类
  3. 分为三类:
  4. - 内置对象: string,number,boolean等
  5. - BOM浏览器对象模型 Browser Object Model, 包含和浏览器相关的内容
  6. - DOM文档对象模型 DocumentObjectModel, 包含和页面相关的内容
  7. <a name="db486b10"></a>
  8. # BOM浏览器对象模型
  9. window对象:该对象里面的属性和方法称为全局属性和方法, 访问时可以省略window.
  10. <a name="599d9d8b"></a>
  11. ### window对象中的常见方法
  12. - alert() 弹出提示框
  13. - confirm() 弹出确认框
  14. - prompt() 弹出文本框
  15. - isNaN() 判断变量是否是NaN
  16. - parseInt() 将字符串或小数转成整数
  17. - parseFloat() 将字符串转成小数
  18. - let timer = setInterval(方法,时间间隔) 开启定时器
  19. - clearInterval(timer) 停止定时器
  20. <a name="55d3f065"></a>
  21. ### window对象中常见的属性
  22. - location:位置
  23. - location.href 获取和修改浏览器的请求地址
  24. - location.reload() 重新加载页面方法
  25. - history:历史
  26. - history.length 获取历史页面数量
  27. - history.back() 返回上一页面方法
  28. - history.forward() 前往下一页面方法
  29. - screen:屏幕
  30. - screen.width 屏幕宽度分辨率
  31. - screen.height 屏幕高度分辨率
  32. - navigator: 导航/帮助
  33. - navigator.userAgent 获取浏览器的版本信息
  34. <a name="b695ef08"></a>
  35. # 事件相关
  36. <a name="9ab70c72"></a>
  37. ### 什么是事件?
  38. 系统给提供的一些特定时间点,包括鼠标事件/键盘事件和状态改变事件
  39. <a name="d872400c"></a>
  40. ### 鼠标事件
  41. - onclick: 鼠标点击事件
  42. - onmouseover:鼠标移入事件
  43. - onmouseout:鼠标移出事件
  44. - onmousedown:鼠标按下事件
  45. - onmouseup:鼠标抬起事件
  46. - onmousemove:鼠标移动事件
  47. <a name="32f13c9d"></a>
  48. ### 键盘事件
  49. - onkeydown:键盘按下
  50. - onkeyup:键盘抬起
  51. <a name="1ea0302a"></a>
  52. ### 事件传递(事件冒泡)
  53. 当某一个区域的多个元素事件需要响应,事件响应的顺序是从最底层往上层传递(类似气泡从下往上,所以又称为事件冒泡)
  54. 事件绑定(如何给元素添加事件) 两种绑定方式:
  55. -
  56. 事件属性绑定:
  57. ```html
  58. <input type="button" value="事件属性绑定" onclick="alert('事件属性绑定成功!')">
  • 动态绑定(通过js代码给元素添加事件):
    1. //动态绑定, 因为动态绑定可以将html代码和js代码分离所以使用的会更多.
    2. btn.onclick = function () {
    3. alert("动态绑定成功!");
    4. }