JavaScript

发布于 更新于
本文目录
  1. JavaScript
  2. 1、介绍和基本使用
  3. 1.1、javascript概述
  4. 1.2、简介
  5. 1.3、引入方式
  6. 1、行间事件(主要用于事件)
  7. 2、页面script标签嵌入
  8. 3、外部引入
  9. 2、基本语法
  10. 1、注释
  11. 2、数据类型(重点)
  12. 3、变量定义(重点)
  13. 4、字符串常见方法(了解)
  14. 5、运算符
  15. 5、条件语句
  16. 6、循环
  17. 7、函数
  18. 7、常用对象及函数(重点)
  19. 7.1、Array
  20. 7.2、常用函数
  21. 8、事件
  22. 1、onclick() 元素点击
  23. 2、onchange() 元素改变
  24. 3、JS操作页面
  25. 1、获取页面标签(重点)
  26. 1、获取标签的方式
  27. 2、获取标签注意问题
  28. 2、操作标签内容(重点)
  29. 3、修改标签属性(重点)
  30. 4、Window对象
  31. 5、JavaScript调试

技术文章测试开发

要了解JavaScript,我们首先要回顾一下JavaScript的诞生。在上个世纪的1995年,当 时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公 司。由于网景公司希望能在静态HTML页面上添加一些

JavaScript

1、介绍和基本使用

1.1、javascript概述

要了解JavaScript,我们首先要回顾一下JavaScript的诞生。在上个世纪的1995年,当 时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公 司。由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich 这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。为什 么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气 来推广,但事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系。

1.2、简介

JavaScript是一种应用于Web项目的脚本语言,由浏览器进行解析,一般用于操作HTML、CSS或是称为DOM的对象,以及基于浏览器的一些核心对象(BOM) 现在也可应用于服务器端编程,node.js就提供了使用JavaScript语言编程以提供服务器端服务环境 JavaScript从最早的语法不够规范,到后续慢慢的由标准化组织规范起来,现在常提的ES6,即ECMAScript 2015,作为JavaScript的规范,已经被所有的现代浏览器所支持

1.3、引入方式

1、行间事件(主要用于事件)

<input type="button" name="" onclick="alert('ok!');">

2、页面script标签嵌入

<script type="text/javascript">
	alert('ok!');
</script>

3、外部引入

<script type="text/javascript" src="js/index.js"></script>

2、基本语法

1、注释

我们可以添加注释来对 JavaScript 进行解释,或者提高代码的可读性。 单行注释:以 // 开头。 多行注释:以 /* 开始,以 */ 结尾。

2、数据类型(重点)

一共可以分为5种:String、Number、Boolean、Object和Function 3种对象类型:Object、Date、Array 2种不包含任何值的数据类型:null(无对象)、undefined(无初始值),两者几乎相同,因语言设计者考虑产生undefined

null表示"没有对象",即该处不应该有值。 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。

3、变量定义(重点)

不分数据类型,都使用var关键字进行变量定义,命名规则使用驼峰,比如:


var name = “jack ma”;
var age = 18;
var isLeader = true;
var temp;   //未定义的值,即undefined
//创建数组
var animals = new Array(“dog”,“pig”,“cat");
var animals = [“dog”,“pig”,“cat"];
//创建对象
var animal = { type:“dog” , name:“旺财”,color:“red”};

var objC = { // 创建对象 :方式3
    name: 'abc',
    age: 19,
    fun: function (var1,var2) {
        alert(var1);
        alert(var2);
        alert(this.age * 2);
    }
};

objC.fun(111,222)

定义变量的三种方式(扩展):

var:定义的变量可以跨代码块访问。 let:定义块级作用局的变量 const: 定义常初始化必须赋值,值不可修改,只能在块级作用域访问

4、字符串常见方法(了解)

属性:length

常用方法:trim、indexOf、split、replace、replaceAll、substr、substring、toLowerCase、toUpperCase等 特殊字符转义:主要是在字符串中显示一些关键字或不可见字符,如单引号(\’)、双引号(\”)、反斜杠(\)、换行(\n)、回车(\r)、Tab(\t)、退格符(\b)、换页符(\f)

5、运算符

  • 算术运算符: +(加)、 -(减)、 *(乘)、 /(除)、 %(求余)

  • 赋值运算符:=、 +=、 -=、 *=、 /=、 %= 、++

  • 比较运算符: 、= 、>、>=、<、<=、 != 、

  • 逻辑运算符:&&(与)、||(或 )、!(否 )

5、条件语句

  • if 语句

    var a = 199;
    if(a>200){
        alert('大于200');
    }
  • else 语句

    var a = 199;
    if(a>200){
        alert('大于200');
    }else {
        alert(a);
    }
  • else if 语句

    var a = 199;
    if(a>200){
        alert('大于200');
    }else if(a>100){
        alert('大于100')
    }else {
        alert(a);
    }
  • switch(了解)

    var d=new Date().getDay();
    var x;
    switch (d)
    {
      case 0:x="今天是星期日";
      break;
      case 1:x="今天是星期一";
      break;
      case 2:x="今天是星期二";
      break;
      case 3:x="今天是星期三";
      break;
      case 4:x="今天是星期四";
      break;
      case 5:x="今天是星期五";
      break;
      case 6:x="今天是星期六";
      break;
    }
    alert(x)

6、循环

  • for 循环

    for(var i = 0 ;i<10;i++){
        console.log(i);
    }
  • for in 循环

    for (x in arrayr){
        循环体代码
    }

    遍历数组

    var aList = new Array(11, 22, 33);
    for (x in aList) {
        alert(aList[x]);
    }

    遍历对象

    var objC = {name: 'abc', age: 19};
    // 遍历对象
        for (x in objC){
        alert(x);
        alert(objC[x]);
    }
  • while循环(了解)

    while(isComplete == true){
         //代码
    }
    
  • do while循环(了解)

    do{
         //代码
         i++
    } while(i<5);
    
  • break

    跳出整个循环

  • continue

    跳过当前循环,继续下次循环

7、函数

  • 定义

    定义函数的关键词 function,函数内的代码块,包裹在花括号中:

    // 函数的定义 使用function
    function func() {
        alter(999)
    }
    // 函数调用
    func()

    提示:JavaScript 对大小写敏感。关键词 function 必须是小写的

  • 函数参数:

    function addNumber(var1,var2) {
        alert(var1 + var2;);
    }
    addNumber(11,22)
  • 函数返回值

    使用 return 来返回值。在使用 return 语句时,函数会停止执行,并返回指定的值。

    function addNumber(var1, var2) {
        return var1 + var2;
    }
    var res = addNumber(11,222);
    alert(res)

7、常用对象及函数(重点)

7.1、Array

  • unshift

    将新项目添加到数组的开头:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.unshift("Lemon");
  • push

    将新项目添加到数组的结尾:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.push("Lemon");
  • filter(过滤函数()) 过滤

    var ages = [32, 33, 16, 40];
    function checkAdult(age) {
      return age >= 18;
    }
    
    console.log(ages.filter(checkAdult));
  • forEach 循环

    <p id="demo"></p>
    
    <script>
    let text = "";
    const fruits = ["apple", "orange", "cherry"];
    fruits.forEach(myFunction);
    
    document.getElementById("demo").innerHTML = text;
    
    function myFunction(item, index) {
      text += index + ": " + item + "<br>"
    }
    
    function myFunction(item) {
      alert( item)
    }
    </script>
  • reduce 扁平化数组

    array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    function(total, currentValue, index, arr) 必需,为数组中的每个元素运行的函数。
        total                必需,返回值
        currentValue        必需,当前元素的值
        currentIndex        可选,当前元素的数组索引
        arr                    可选,当前元素所属的数组对象
    initialValue            可选,返回值初始值
    var numbers = [175, 50, 25]
    var value = numbers.reduce(myFunc)
    function myFunc(total, num) {
        return total + num
    }
    console.log(value)

7.2、常用函数

  • setInterval:定时器

    <input type="text" id="clock" size="35" />
    <button onclick="window.clearInterval(test)">Stop interval</button>
    <script>
    var test = window.setInterval("clock()",2000)
    function clock() {
        var t=new Date()
        document.getElementById("clock").value=t
    }
    </script>
    
  • setTimeout:定时执行一次

    <p id="content"> 请等三秒钟!</p>
    <script>
        setTimeout("changeState()",3000 )
        function changeState(){
            let content=document.getElementById('content')
            content.innerHTML="<div style='color:red'>我是三秒后显示的内容!</div>"
        }
    </script>
  • eval:计算某个字符串,并转换成JavaScript语法

    <script>
        eval('var a = 10')
        eval('alert(a)')
    </script>
  • JSON.parse(str) 字符串转成json对象

    var o = JSON.parse("{\"id\":123}")
    console.log(o)
  • JSON.stringify(obj) json对象转成str

    var o = JSON.parse("{\"id\":123}")
    var str = JSON.stringify(o)
    console.log(str)

8、事件

1、onclick() 元素点击

<div class="dv1" id="dv01" onclick="tank()">这个是div1</div>
<script>
function tank() {
	alert('hello')
}
</script>

2、onchange() 元素改变

<div class="dv1" id="dv01" onclick="tank()">这个是div1</div>
<script>
function tank() {
	alert('hello')
}
</script>

3、JS操作页面

DOM (Document Object Model),文档对象模型,定义用于HTML的一系列标准的对象,以及访问和处理HTML对象的标准方法。通过 DOM,你可以更方便访问所有的 HTML 元素,连同它们所包含的内容和属性。 Document是挂载到window下的,具体涉及到渲染问题,有兴趣的同学可以去研究 整体是一个对象树,匹配于HTML文档,具体如下图:

1645869808706.png

节点树中的节点彼此拥有层级关系。

父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

  • 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • 如何改变 HTML 元素的内容 (innerHTML)

  • 如何改变 HTML 元素的样式 (CSS)

  • 如何对 HTML DOM 事件对做出反应

  • 如何添加或删除 HTML 元素

1、获取页面标签(重点)

1、获取标签的方式

通常,通过 JavaScript操作 HTML 元素,可以使用内置对象document的方法来找到该标签。

通过 id 找到 HTML 元素(常用)
document.getElementById()
通过标签名找到 HTML 元素 返回列表
getElementsByTagName()
    方法返回文档中匹配指定 CSS 选择器的一个元素。
querySelector()

2、获取标签注意问题

<script type="text/javascript">
    var bo = document.getElementById('box');
	//box对应的div这个元素定义在下面,此时获取不到,就会出错
	alert(bo)
</script>
<div id="box">这是div元素</div>

上面的语句,如果把javascript写在元素的上面,就会出错,因为页面上从上往下加载执行 的,javascript去页面上获取元素div1的时候,元素div1还没有加载,

解决方法

javascript放到页面最下边

<div id="box">这是div元素</div>
<script type="text/javascript">
var bo = document.getElementById('box');
</script>
</body

放入window.onload触发的函数里面

window.onload函数在页面加载完后才执行,就不会出错了。

<script type="text/javascript">
window.onload = function(){
	var bo = document.getElementById('box');
}
</script>
<div id="box">这是div元素</div>

2、操作标签内容(重点)

innerHTML 属性

获取元素内容的最简单方法是使用 innerHTML 属性。innerHTML 属性对于获取 或替换 HTML 元素的内容很有用。

//读取
var odv1 = document.getElementById('box');
var content1 = odv1.innerHTML;
alert(content1)
//写入
var odv1 = document.getElementById('box');
odv1.innerHTML = 哈哈哈;

3、修改标签属性(重点)

操作属性的方法

  1. “.” 操作

  2. “[ ]”操作

读取

<input type="text" id="input_user" name="user" value="java">
// 读取属性
var odv1 = document.getElementById('input_user');
var idValue = odv1.id;
var nameValue = odv1['name'];
alert(idValue);
alert(nameValue);

写入

<a href="" id="a1" >柠檬班</a>
// 修改属性
a1 = document.getElementById('a1');
// a1.href = 'http://www.lemonban.com';
a1['href'] = 'http://www.lemonban.com';

注意点:操作class属性的时候,要将属性名字改为className

a1.className = 'hide'

修改css样式

<p id="p2">Hello World!</p>

<script>
    document.getElementById("p2").style.color = "blue";
</script>

4、Window对象

浏览器对象模型(Browser Object Model (BOM)):非标准规范,但浏览器普遍在使用;其中,核心对象window非常常用,document就是window对象的子对象 全局变量是window对象的属性;全局函数是window对象的函数 具体使用时,window可省略

 document 对象:主要用于访问html标签下的内容,尤其是body部分
 history 对象,主要用于访问浏览器历史对象
 location 对象,主要用于如地址跳转等内容
 navigator 对象,主要用于获取浏览器相关参数
 screen 对象,主要用于获取屏幕尺寸等相关内容
 警告框:window.alert( “警告消息”)

Cookies

用户浏览器与远端的Web服务是通过HTTP协议进行通讯的,比如将HTML、CSS、JavaScript下载到本地,但由于HTTP协议的无状态特性,下载完后,与远端的Web服务其实就没有关系了

IE浏览器(允许阻止)

<!DOCTYPE html>
<html>
	<head>
		<title>Cookies的标题</title>
		<meta charset="utf-8">
		<script type="text/javascript">
			//设置Cookie
			function setCookie(cname,cvalue,exSeconds){
			  var d = new Date();
			  d.setTime(d.getTime()+(exSeconds*1000));
			  var expires = "expires = "+d.toGMTString();
			  document.cookie = cname + " = " + cvalue + "; " + expires;
			}
			//获取Cookie
			function getCookie(cname){
			  var name = cname + "=";
			  var ca = document.cookie.split(';');
			  for(var i=0; i<ca.length; i++)
			  {
				var c = ca[i].trim();
				if (c.indexOf(name)==0) return c.substring(name.length,c.length);
			  }
			  return "";
			}
			//添加Cookie
			function addCookie(){
				var cookieName = document.getElementById("txtCookieName").value;
				var cookieValue = document.getElementById("txtCookieValue").value;
				var cookieEx = document.getElementById("txtCookieEx").value;
				setCookie(cookieName,cookieValue,cookieEx);
			}
			//获取Cookie
			function loadCookie(){
				var cookieName = document.getElementById("txtCookieNameOfGet").value;
				var cookieValue = getCookie(cookieName);
				document.getElementById("spnCookies").innerText = cookieValue;
			}
		</script>
	</head>
	<body>
		设置Cookies:<br />
		名称:<input type="text" id="txtCookieName" />值:<input type="text" id="txtCookieValue" />过期时间:<input type="number" id="txtCookieEx" />秒
		<input type="button" value="添加Cookie" onclick="addCookie()" /><br>

		获取Cookies:<br />
		名称:<input type="text" id="txtCookieNameOfGet" /><span id="spnCookies"></span><input type="button" value="获取Cookie" onclick="loadCookie()" />
	</body>
</html>

LocalStorage

// 存储
localStorage.setItem("lastname", "Smith");
// 检索
alert(localStorage.getItem("lastname"));
// 删除
localStorage.removeItem("key");

5、JavaScript调试

console.log

debugger关键字

F12调试工具

来源:testingpai

继续阅读