JavaScript

本贴最后更新于 959 天前,其中的信息可能已经渤澥桑田

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、条件语句

6、循环

7、函数

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

7.1、Array
7.2、常用函数

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)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

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调试工具

回帖
请输入回帖内容 ...