JavaScript参考手册

JS基础理论

简介

       JavaScript是一种脚本语言,可以在浏览器中直接运行,是一种在浏览器端实现网页与客户交互的技术。JavaScript 是一种轻量级的编程语言。

       JavaScript代码可以直接嵌套在HTML网页中 <script>与</script> 之间。

        一些老的实例可能会在 <script> 标签中使用 type="text/javascript"。在 HTML5 中,不必那样做了。JavaScript 是 HTML5 以及所有现代浏览器中的默认脚本语言。

注释

       注释不能嵌套

<script>
	// 单行注释
	/*
	    多行注释
	    多行注释
	    多行注释
	*/
</script>

位置

       脚本可位于 HTML 的 <body> 或 <head> 部分中,或者同时存在于两个部分中。

       通常的做法是把函数放入 <head> 部分中,或者放在 页面底部。最好是把它们安置到同一处位置,这样不会干扰页面的内容,显得比较直观,又能在出现问题时快速定位。

       放在 <script> 标签中的脚本与外部引用的脚本运行效果完全一致。外部脚本不能包含 <script> 标签。

数据类型

       值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(undefined)、Symbol(Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值)。

       引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

       JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型。

<script>
	var str;           // str 为 undefined
	str = 6;           // 现在 str 为数字
	str = "test";      // 现在 str 为字符串
	// JavaScript 数字
	var a1 = 66.00;      // 使用小数点来写
	var a2 = 66;         // 不使用小数点来写
	// JavaScript 布尔
	var x = true;
    var y = false;
    // JavaScript 数组
    var b1 = new Array();
	b1[0] = "11";
	b1[1] = "22";
	b1[2] = "33";
	var b2 = new Array("11","22","33");
	var b3 = ["11","22","33"];
	var array2 = new Array(10);     //array2是长度为10的数组
	var array3 = new Array("aa", 12, true); //array3是一个长度为3的数组,且元素类型不同
	// JavaScript 对象
	var user = {
		name : "test",
		age : 66,
		id : 1
	};
	// 使用
	var name = user.name;
	var age = user["age"];
</script>

作用域

       局部变量:变量在函数内声明。只能在函数内部访问。

       全局变量:变量在函数外声明。全局变量有 全局作用域:网页中所有脚本和函数均可使用。

       没有声明就使用的变量,默认为全局变量,不论这个变量在哪被使用。

函数

       JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。在 return 语句时,函数会停止执行(后面的语句不执行),并返回指定的值。

       一是在页面中直接嵌入JavaScript:

<script>
	function 函数名(参数列表) {
    	函数体(返回值使用return语句)
    }
</script>

       二是链接外部JavaScript文件:

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

事件

       HTML 事件是发生在 HTML 元素上的事情。使用格式: <标签 各有关属性及其属性值 on事件名称="函数名称(参数);" /> 。对于事件,onclick和onClick都可以。

       当在 JS 文件中为相关元素设置事件时,其写法与 HTML 事件属性写法相同,例如:

<button id="test" onclick="changeText()">内容变更</button>

       也可以在js中,给指定元素绑定事件:

<script>
	var test = document.getElementById("test");
	test.onclick = function changeContent(){
    	// ...
	}
</script>
<script>
// 注意:在为元素添加事件句柄或者删除元素事件句柄的过程中
// 不要将 event 参数设置为 onclick,而必须写成 click,去掉事件名称中的 on 即可。

// 添加事件句柄函数原型:
element.addEventListener(event, function, [useCapture]);
// 示例
document.getElementById("test").addEventListener("mouseover", function(){
			alert(12);
		});

// 删除事件句柄的函数原型:
element.removeEventListener(event, function, [useCapture]);
</script>

鼠标事件

属性描述
onclick点击 HTML 元素
ondblclick双击
onmousedown鼠标按钮被按下
onmouseenter当鼠标指针移动到元素上时触发
onmouseleave当鼠标指针移出元素时触发
onmouseover鼠标移到某元素之上
onmouseout鼠标从某元素移开
onmousemove鼠标被移动
onmouseup鼠标按键被松开

键盘事件

属性描述
onkeydown用户按下键盘按键
onkeyup在键盘按键被松开时发生
onkeypress某个键盘按键被按下并松开

其他常用

属性描述
onchangeHTML 元素内容值改变
onblur元素或窗口本身失去焦点时
onfocus获得焦点时
oninput此事件会在value属性值发生改变时触发,通过js改变value属性值不会触发此事件。只有IE8以上或者谷歌火狐等标准浏览器支持
onload页面加载后再window对象上触发
onresize 调整页面大小时
onselect选中文本时触发
onsubmit单击提交按钮时,在<form>上触发
onunload页面完全卸载时,在window上触发,一般位于body标签
onscrollonscroll 事件在元素滚动条在滚动时触发

对象

       JavaScript中设有内置对象,常用的内置对象(String,Date), 浏览器的文档对象(window 、navigator、screen、history、location、document等对象)。

JS 字符串

<script>
	var str = "xxxxx\nsssss";
	var infoall = str.split(/[\n]/);
</script>

JS Date

<script>
	var dnow = new Date();
  	var dyear = dnow.getFullYear();   // 返回年份
  	var dmonth = dnow.getMonth();     // 返回月份(0-11)
  	var ddate = dnow.getDate();       // 返回月中的第几天(1-31)
  	var dday = dnow.getDay();         // 返回星期几(0-6)
	var dhours = dnow.getHours();     // 返回小时(0-23)
	var dminutes = dnow.getMinutes(); // 返回分钟(0-59)
	var dseconds = dnow.getSeconds(); // 返回秒数(0-59)
	var dmi = dnow.getMilliseconds(); // 返回毫秒(0-999)
</script>

JS Number以及数字

       语法:var num = new Number(value);

       如果一个参数值不能转换为一个数字将返回 NaN (非数字值)。

<script>
	var a = 1;
	var b = 2;
	// c的结果是12
	var c = a + b;

	// c1的结果是3
	var c1 = Number(a) + Number(b);
	var cc = Number("1") + Number("2");
	
	var str = "123.123";
	// "123.1"
	parseFloat(str).toFixed(1);
	
	// 先转Int,再保留小数位数
	// "123.0"
	parseInt(str).toFixed(1);
</script>

window

       所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

       全局变量是 window 对象的属性。全局函数是 window 对象的方法。甚至 HTML DOM 的 document 也是 window 对象的属性之一。

方法描述
alert("xxx")弹出一个警告框
confirm("xxx")弹出一个确认对话框,单击“确认”返回true,否则返回false
prompt()弹出一个提示对话框,并要求输入一个简单的字符串
setTimeout(function,"1000")在经过指定的时间后执行代码,单位:毫秒值。
clearTimeout()取消对指定代码的延迟执行
setInterval()周期执行指定的代码
clearInterval()停止周期执行指定的代码
open()
window.open()
打开新窗口
window.close()关闭当前窗口
window.moveTo()移动当前窗口
window.resizeTo()调整当前窗口的尺寸

示例:

<script>
	// 警告框
	// \n 用于换行
	alert("第一行\n第二行");
		
	// 确认框
	if(confirm("是否确定?")){
		alert("确定");
   	}else{
		alert("取消");
   	}
   		
   	// prompt("" ,"")	弹出一个提示对话框,并要求输入一个简单的字符串
   	// 1为上面固定的文本,2为虚型文本
	var name = prompt("1请输入","2请输入名字");
  	if(name != null && name != ""){      		
  		alert(name);
 	}  

	window.setTimeout("location.href='http://www.baidu.com'", 3000);
	// window.location.href="http://www.baidu.com";
</script>

window.open()以及相关

       使用 window 对象的 open() 方法可以打开一个新窗口。用法如下:

window.open(URL, name, features, replace);

       参数列表如下:

  • URL:可选字符串,声明在新窗口中显示网页文档的 URL。如果省略,或者为空,则新窗口就不会显示任何文档。

  • name:可选字符串,声明新窗口的名称。这个名称可以用作标记 <a> 和 <form> 的 target 目标值。如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用,在这种情况下,features 参数将被忽略。

  • features:可选字符串,声明了新窗口要显示的标准浏览器的特征,具体说明如下表所示。如果省略该参数,新窗口将具有所有标准特征。

  • replace:可选的布尔值。规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。

新窗口显示特征说明
fullscreen = yes | no | 1 | 0是否使用全屏模式显示浏览器。默认是 no。处于全屏模式的窗口同时处于剧院模式。
height = pixels窗口文档显示区的高度。单位为像素。
left = pixels窗口的 x 坐标。单位为像素。
location = yes | no | 1 | 0是否显示地址字段。默认是 yes。
menubar = yes | no | 1 | 0是否显示菜单栏。默认是 yes。
resizable = yes | no | 1 | 0窗口是否可调节尺寸。默认是 yes。
scrollbars = yes | no | 1 | 0是否显示滚动条。默认是 yes。
status = yes | no | 1 | 0是否添加状态栏。默认是 yes。
toolbar = yes | no | 1 | 0是否显示浏览器的工具栏。默认是 yes。
top = pixels窗口的 y 坐标.
width = pixels窗口的文档显示区的宽度。单位为元素。
<script>
// 自动弹出一个窗口,一段时间之后自动关闭该窗口,同时允许用户单击页面超链接,更换弹出窗口内显示的网页 URL。
var url = "c.biancheng.net";
// 设置新窗口的特性
var features = "height=500, width=800, top=100, left=100, toolbar=no, menubar=no, scrollbars=no,resizable=no, location=no, status=no";
// 动态生成一个超链接
document.write('<a href="c.biancheng.net" target="newW">切换到C语言中文网首页</a>');
var me = window.open(url, "newW", featrues);  //打开新窗口
setTimeout (function () {
    if (me.closed) {
        console.log("创建的窗口已经关闭。");
    } else {
        me.close();
    }
}, 5000);
</script>

       window.opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用。

       当使用window.open()打开一个窗口,您可以使用此属性返回来自目标窗口源(父)窗口的详细信息。

<!-- 其他信息 -->
<script>
	// 在使用window.open()方法打开一个页面后,如果需要在执行完一些操作后自动关闭,可以添加如下语句
	// 其他操作
	window.opener=null;
    window.close();
</script>

screen

       window.screen 对象包含有关用户屏幕的信息。

       window.screen 对象在编写时可以不使用 window 这个前缀。

属性描述
screen.width返回屏幕分辨率宽度
screen.height返回屏幕分辨率高度
screen.availWidth返回访问者屏幕的宽度(不包括Windows任务栏),以像素计,减去界面特性,比如窗口任务栏
screen.availHeight返回访问者屏幕的高度(不包括Windows任务栏),以像素计,减去界面特性,比如窗口任务栏
<script>
	alert("可用宽度: " + screen.availWidth);
	alert("宽度: " + screen.width);	
	alert("可用高度: " + screen.availHeight);
	alert("高度: " + screen.height);
</scritp>

location

       window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

       window.location 对象在编写时可不使用 window 这个前缀。

       示例:http://www.123.cn:80/news/index.jsp?id=123&name=location#top

属性,方法描述例子
href设置或获取整个 URL 字符串
protocol返回一个URL协议,包括后缀的冒号http:
host返回一个URL的主机名和端口www.123.cn:80
hostname返回URL的主机名www.123.cn
port返回一个URL服务器使用的端口号80
pathname返回的URL路径名news/index.jsp
search返回一个URL的查询部分,包括前导问号?id=123&name=location
hash返回一个URL的锚部分,包括前导符(#)#top
reload()重新载入当前文档,用于刷新当前文档
类似于浏览器上的刷新页面按钮
location.reload();
location.reload(true);
如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档
assign(url)载入一个新的文档window.location.assign(“https://www.baidu.com”);
replace(url)用新的文档替换当前文档window.location.replace(“https://www.baidu.com”);
  • window.location.href = "url";

    当前页面打开URL页面,改变url地址,如果URL为空则重新打开当前页面
    (1)与self.location.href = "url";self.location.href="url";相同
    (2)this.location.href = "url";       当前页面打开URL页面
    (3)parent.location.href = "url";    在父页面打开新页面
    (4)top.location.href = "url";        在顶层页面打开新页面

       window.location.reload();:强制刷新页面,从服务器重新请求,和F5功能一样。

       window.location.assign(url); : 加载 URL 指定的新的 HTML 文档。就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。

       window.location.replace(url); : 通过加载 URL 指定的文档来替换当前文档,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的,这个特点对于做一些过渡页面非常有用

<script>
	alert(location.href);
	alert(location.protocol);
	alert(location.host);
	alert(location.hostname);
	alert(location.port);
	alert(location.pathname);
	alert(location.search);
	alert(location.hash);
</script>
<script>
	// ?k1=v1&k2=v2&...
	var parameters = window.location.search;
	// 获取链接中的参数,如果出现 idxx 这种包含的,要注意代码的书写
	var id = "";
	if(parameters.indexOf('id') > -1){
		id = parameters.substring(parameters.indexOf('id') + 3);
	}
	if(id.indexOf('&') > -1){
		id = id.substring(0, id.indexOf('&'));
	}
</script>

history

       history 对象包含用户(在浏览器窗口中)访问过的 URL。

       history 对象是 window 对象的一部分。

属性,方法含义
length浏览历史记录的总数
go(index)从浏览历史中加载URL,index参数是加载URL的相对路径。index为负数时,表示当前地址之前的浏览记录,index正数时,表示当前地址之后的浏览记录
forward()从浏览历史中加载下一个URL,相当于history.go(1)
back()从浏览历史中加载上一个URL, 相当于history.go(-1)
	var sum = history.length;
	history.back();
	// go() 里面的参数为0,表示刷新页面
	history.go(0);

document

       document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

       document 对象是 window 对象的一部分,可通过 window.document 或 document 对其进行访问。

属性以及方法说明
document.createElement()创建元素节点
document.createTextNode()创建文本节点
document.write(“<br>”+“<p>这是一个段落</p>”);向页面输出信息
document.all页面内所有元素的一个集合,document.all(0)标示页面内第一个元素
document.all.id名返回一个对象
document.all.name名返回数组

navigator

       window.navigator 对象包含有关访问者浏览器的信息。

       window.navigator 对象在编写时可不使用 window 这个前缀。

属性,方法描述
appCodeName返回浏览器的代码名
appName返回浏览器的名称
appVersion返回浏览器的平台和版本信息
cookieEnabled返回指明浏览器中是否启用 cookie 的布尔值
platform返回运行浏览器的操作系统平台
userAgent返回由客户机发送服务器的user-agent 头部的值
javaEnabled()指定是否在浏览器中启用Java
taintEnabled()规定浏览器是否启用数据污点(data tainting)

常用属性以及方法

全局属性描述
Infinity代表正的无穷大的数值。
NaN指示某个值是不是数字值。
undefined指示未定义的值。
全局方法描述
decodeURI()解码某个编码的 URI。
decodeURIComponent()解码一个编码的 URI 组件。
encodeURI()把字符串编码为 URI。
encodeURIComponent()把字符串编码为 URI 组件。
escape()对字符串进行编码。
eval()计算 JavaScript 字符串,并把它作为脚本代码来执行。
isFinite()检查某个值是否为有穷大的数。
isNaN()检查某个值是否是数字。
Number()把对象的值转换为数字。
parseFloat()解析一个字符串并返回一个浮点数。
parseInt()解析一个字符串并返回一个整数。
String()把对象的值转换为字符串。
unescape()对由 escape() 编码的字符串进行解码。
Math说明
Math.PI返回PI
Math.sqrt(16)返回16的平方根
Math.abs(x)返回 x 的绝对值
Math.ceil(x)对 x 进行上舍入
Math.floor(x)对 x 进行下舍入
Math.pow(x,y)返回 x 的 y 次幂
Math.random()返回 0 ~ 1 之间的随机数
Math.round(x)四舍五入
  • js怎么判断两个字符串是否相等
<script>
	// ==可以自动转换类型比较,===严格同种类型比较
	var a = "123";
	var b = 123;
	alert(a == b);  // true
	alert(a === b); // false
</script>

       obj为元素对象

属性,方法说明
obj.value标签内的value值,对于文本表现为输入的值;
如果对象没有value,则设置为空字符串。
obj.name
obj.getAttribute(“name”)
标签内的name值
obj.className
obj.getAttribute(“class”)
标签内的class值
obj.style对象的css样式
obj.style.xxx返回一个元素的style对象的引用,通过它我们可以获得并修改每个单独的样式;
document.getElementById(“test”).style.backgroundColor=“red”
obj.checked单选框:true选中,false未选中
obj.focus()光标聚集到此对象
obj.submit()form表单:表单提交
obj.innerHTML标签之间的HTML内容
obj.innerTEXT标签之间的文本内容

在这里插入图片描述

下拉框说明
obj.options获取下拉框的所有option的节点对象,是一个数组
obj.options.length下拉框的数量
obj.options[0].value下拉框的第一个value值
obj.options[0].text下拉框的第一个文本内容值
obj.selectedIndex获取当前选中的option的索引,用上面的两个即可获取当前值
obj.options[Object.selectedIndex].value当前选中的下拉框的value值
obj.options[Object.selectedIndex].text当前选中的下拉框的文本内容值

严格模式

       针对整个脚本文件

<script>
	"use strict";
   console.log("这是严格模式");
</script>

       针对单个函数

<script>
	function strict(){
		"use strict";
		return "这是严格模式";
	}
</script>

       脚本文件的变通写法:因为第一种调用方法不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数之中。

<script>
	(function (){
		"use strict";
		// ...
	})();
</script>

       在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。

       使用let关键字,要注意“javascript 严格模式”。

let和var关键字的异同:

       声明后未赋值,表现相同

<script>
	var varTest;
  	let letTest;
 	console.log(varTest); // 输出undefined
  	console.log(letTest); // 输出undefined
</script>

       使用未声明的变量,表现不同:

<script>
	console.log(varTest); // 输出undefined(注意要注释掉下面一行才能运行)
	console.log(letTest); // 直接报错:ReferenceError: letTest is not defined
</script>

       重复声明同一个变量时,表现不同

<script>
	var varTest = 'test var OK';
  	let letTest = 'test let OK';

  	var varTest = 'varTest changed';
  	let letTest = 'letTest changed'; // 直接报错:SyntaxError: Identifier 'letTest' has already been declared

	// 输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)
  	console.log(varTest);
 	console.log(letTest);
</script>

       变量作用范围,表现不同

<script>
	var varTest = 'varTest OK';
  	let letTest = 'letTest OK';

  	{
    	var varTest = 'varTest changed';
    	let letTest = 'letTest changed';
  	}

	// 输出"varTest changed",内部"{}"中声明的varTest变量覆盖外部的varTest声明
  	console.log(varTest);
  	// 输出"letTest OK",内部"{}"中声明的letTest和外部的letTest不是同一个变量
  	console.log(letTest);
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值