注:本篇绝大多数内容来自 菜鸟编程

JavaScript

img

JavaScript 是 Web 的编程语言,是脚本语言。

所有现代的 HTML 页面都可以使用 JavaScript。

Web 开发必须学习的三种语言:

  1. HTML 定义了网页的内容
  2. CSS 描述了网页的布局
  3. JavaScript 控制了网页的行为

JavaScript 参考手册

在菜鸟教程中,我们为您提供完整的 JavaScript 对象、浏览器对象、HTML DOM 对象参考手册。

以下手册包含了每个对象、属性、方法的实例。


HTML/CSS/JS 在线工具

HTML/CSS/JS 在线工具可以在线编辑 HTML、CSS、JS 代码,并实时查看效果,你也可以将优质代码保存分享:https://c.runoob.com/front-end/61


1.直接在HTML用JS写文字

1
2
document.write("<h1>这是一个标题</h1>");
document.write("<p>这是一个段落。</p>");

2.alert() 函数在 JavaScript 中并不常用,但它对于代码测试非常方便。

1
2
// 一个按钮,按下后网页提示 "欢迎!"
<button type="button" onclick="alert('欢迎!')">点我!</button>

3.JS改变HTML元素内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<body>

<h1>我的第一段 JavaScript</h1>
<p id="demo">
JavaScript 能改变 HTML 元素的内容。
</p>
<script>
function myFunction()
{
x=document.getElementById("demo"); // 找到元素
x.innerHTML="Hello JavaScript!"; // 改变内容
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>

</body>

您会经常看到 **document.getElementById(“some id”)**。这个方法是 HTML DOM 中定义的。

DOM (Document Object Model)(文档对象模型)是用于访问 HTML 元素的正式 W3C 标准。

您将在本教程的多个章节中学到有关 HTML DOM 的知识。

4.JavaScript:改变 HTML 图像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 本例会动态地改变 HTML <image> 的来源(src):
<script>
function changeImage()
{
element=document.getElementById('myimage')
if (element.src.match("bulbon"))
{
element.src="/images/pic_bulboff.gif";
}
else
{
element.src="/images/pic_bulbon.gif";
}
}
</script>
<img id="myimage" onclick="changeImage()" src="/images/pic_bulboff.gif" width="100" height="180">
1
*以上实例中代码* **element.src.match("bulbon")** *的作用意思是:检索* **<img id="myimage" onclick="changeImage()" src="/images/pic_bulboff.gif" width="100" height="180">** *里面 src 属性的值有没有包含* **bulbon** *这个字符串,如果存在字符串* **bulbon,图片 **src** *更新为* **bulboff.gif***,若匹配不到* **bulbon** *字符串,***src** *则更新为* **bulbon.gif**.

JavaScript 能够改变任意 HTML 元素的大多数属性,而不仅仅是图片。

5.JS改变文字颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<body>

<h1>我的第一段 JavaScript</h1>
<p id="demo">
JavaScript 能改变 HTML 元素的样式。
</p>
<script>
function myFunction()
{
x=document.getElementById("demo") // 找到元素
x.style.color="#ff0000"; // 改变样式
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>

</body>

6.JS判断输入框中是不是数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>

<h1>我的第一段 JavaScript</h1>
<p>请输入数字。如果输入值不是数字,浏览器会弹出提示框。</p>
<input id="demo" type="text">
<script>
function myFunction()
{
var x=document.getElementById("demo").value;
if(x==""||isNaN(x))
{
alert("不是数字");
}
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>

</body>

以上实例只是普通的验证,如果要在生产环境中使用,需要严格判断,如果输入的空格,或者连续空格 isNaN 是判别不出来的。可以添加正则来判断(后续章节会说明):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>

<h1>我的第一段 JavaScript</h1>
<p>请输入数字。如果输入值不是数字,浏览器会弹出提示框。</p>
<input id="demo" type="text">
<script>
function myFunction()
{
var x=document.getElementById("demo").value;
if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,"")==""){
alert("不是数字");
}
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>

</body>

JavaScript 用法

1
2
3
HTML 中的 Javascript 脚本代码必须位于 **<script>** 与 **</script>** 标签之间。

Javascript 脚本代码可被放置在 HTML 页面的 **<body>** 和 **<head>** 部分中。
1
<!- 如需在 HTML 页面中插入 JavaScript,请使用 <script> 标签。->

外部的 JavaScript

也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。

外部 JavaScript 文件的文件扩展名是 .js。

如需使用外部文件,请在 <script> 标签的 “src” 属性中设置该 .js 文件:

1
2
3
4
5
6
<!DOCTYPE html>
<html>
<body>
<script src="myScript.js"></script>
</body>
</html>
1
你可以将脚本放置于 <head> 或者 <body>中,放在 <script> 标签中的脚本与外部引用的脚本运行效果完全一致。

myScript.js 文件代码如下:

1
2
3
4
function myFunction()
{
document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";
}

JavaScript 输出

JavaScript 没有任何打印或者输出的函数。


JavaScript 显示数据

JavaScript 可以通过不同的方式来输出数据:

  • 使用 window.alert() 弹出警告框。
  • 使用 document.write() 方法将内容写到 HTML 文档中。
  • 使用 innerHTML 写入到 HTML 元素。
  • 使用 console.log() 写入到浏览器的控制台。

使用 window.alert()

你可以弹出警告框来显示数据:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
<body>
<h1>我的第一个页面</h1><p>我的第一个段落。</p>

<script>window.alert(5 + 6);
</script>

</body>
</html>

效果:

操作 HTML 元素

如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法。

请使用 “id” 属性来标识 HTML 元素,并 innerHTML 来获取或插入元素内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html><html>
<body>

<h1>我的第一个 Web 页面</h1>

<p id="demo">我的第一个段落</p>

<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>

</body>
</html>

效果:文字 “段落已修改” 替代了 文字 “我的第一个段落”

1
2
3
4
5
以上 JavaScript 语句(在 <script> 标签中)可以在 web 浏览器中执行:

**document.getElementById("demo")** 是使用 id 属性来查找 HTML 元素的 JavaScript 代码 。

**innerHTML = "段落已修改。"** 是用于修改元素的 HTML 内容(innerHTML)的 JavaScript 代码。

写到控制台

如果您的浏览器支持调试,你可以使用 console.log() 方法在浏览器中显示 JavaScript 值。

浏览器中使用 F12 来启用调试模式, 在调试窗口中点击 “Console” 菜单。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<body>
<h1>我的第一个 Web 页面</h1>
<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>

</body>
</html>

实例 console 截图:


JavaScript 语法


JavaScript 是一个程序语言。语法规则定义了语言结构。


JavaScript 语法

JavaScript 是一个脚本语言。

它是一个轻量级,但功能强大的编程语言。


JavaScript 字面量

在编程语言中,一般固定值称为字面量,如 3.14。

数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。

1
2
3
3.14
1001
123e5

字符串(String)字面量 可以使用单引号或双引号:

1
2
"John Doe"
'John Doe'

表达式字面量 用于计算:

1
2
5 + 6
5 * 10

数组(Array)字面量 定义一个数组:

1
[40, 100, 1, 5, 25, 10]

对象(Object)字面量 定义一个对象:

1
{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}

函数(Function)字面量 定义一个函数:

1
function myFunction(a, b) { return a * b;}

JavaScript 变量

在编程语言中,变量用于存储数据值。

JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值:

1
2
var x, lengthx = 5
length = 6

变量可以通过变量名访问。在指令式语言中,变量通常是可变的。字面量是一个恒定的值。

变量是一个名称。字面量是一个值。


JavaScript 操作符

JavaScript使用 算术运算符 来计算值:

1
(5 + 6) * 10

JavaScript使用赋值运算符给变量赋值:

1
2
3
x = 5
y = 6
z = (x + y) * 10

JavaScript语言有多种类型的运算符:

类型 实例 描述
赋值,算术和位运算符 = + - * / 在 JS 运算符中描述
条件,比较及逻辑运算符 == != < > 在 JS 比较运算符中描述

JavaScript 语句

在 HTML 中,JavaScript 语句用于向浏览器发出命令。

语句是用分号分隔:

1
2
x = 5 + 6;
y = x * 10;

JavaScript 关键字

JavaScript 关键字用于标识要执行的操作。

和其他任何编程语言一样,JavaScript 保留了一些关键字为自己所用。

var 关键字告诉浏览器创建一个新的变量:

1
2
var x = 5 + 6;
var y = x * 10;

JavaScript 同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 JavaScript 扩展中会用到。


JavaScript 注释

不是所有的 JavaScript 语句都是”命令”。双斜杠 // 后的内容将会被浏览器忽略:

1
// 我不会执行

JavaScript 数据类型

JavaScript 有多种数据类型:数字,字符串,数组,对象等等:

1
2
3
4
5
var length = 16;                                  // Number 通过数字字面量赋值 
var points = x * 10; // Number 通过表达式字面量赋值
var lastName = "Johnson"; // String 通过字符串字面量赋值
var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值
var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值

JavaScript 函数

JavaScript 语句可以写在函数内,函数可以重复引用:

引用一个函数 = 调用函数(执行函数内的语句)。

1
2
3
4
5
function myFunction(a, b) {
return a * b;

// 返回 a 乘以 b 的结果
}

JavaScript 字母大小写

JavaScript 对大小写是敏感的。

当编写 JavaScript 语句时,请留意是否关闭大小写切换键。

函数 getElementById 与 getElementbyID 是不同的。

同样,变量 myVariable 与 MyVariable 也是不同的。

JavaScript 中,常见的是驼峰法的命名规则,如 lastName (而不是lastname)。


JavaScript 字符集

JavaScript 使用 Unicode 字符集。

Unicode 覆盖了所有的字符,包含标点等字符。

如需进一步了解,请学习我们的 完整 Unicode 参考手册。


JavaScript 语句标识符

JavaScript 语句通常以一个 语句标识符 为开始,并执行该语句。

语句标识符是保留关键字不能作为变量名使用。

下表列出了 JavaScript 语句标识符 (关键字) :

语句 描述
break 用于跳出循环。
catch 语句块,在 try 语句块执行出错时执行 catch 语句块。
continue 跳过循环中的一个迭代。
do … while 执行一个语句块,在条件语句为 true 时继续执行该语句块。
for 在条件语句为 true 时,可以将代码块执行指定的次数。
for … in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
function 定义一个函数
if … else 用于基于不同的条件来执行不同的动作。
return 退出函数
switch 用于基于不同的条件来执行不同的动作。
throw 抛出(生成)错误 。
try 实现错误处理,与 catch 一同使用。
var 声明一个变量。
while 当条件语句为 true 时,执行语句块。

空格

JavaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。下面的两行代码是等效的:

1
2
var person="runoob";
var person = "runoob";

对代码行进行折行

您可以在文本字符串中使用反斜杠对代码行进行换行。下面的例子会正确地显示:

1
2
document.write("你好 \
世界!");

JavaScript 是脚本语言,浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。


声明(创建) JavaScript 变量

在 JavaScript 中创建变量通常称为”声明”变量。

我们使用 var 关键词来声明变量:

1
var carname;

变量声明之后,该变量是空的(它没有值)。

如需向变量赋值,请使用等号:

1
carname="Volvo";

不过,您也可以在声明变量时对其赋值:

1
var carname="Volvo";

在下面的例子中,我们创建了名为 carname 的变量,并向其赋值 “Volvo”,然后把它放入 id=”demo” 的 HTML 段落中:

1
2
var carname="Volvo";
document.getElementById("demo").innerHTML=carname;

一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明。


JavaScript 数据类型


**值类型(基本类型)**:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

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

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。


JavaScript 拥有动态类型

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

1
2
3
4
var x;               
// x 为 undefinedvar x = 5;
// 现在 x 为数字
var x = "John"; // 现在 x 为字符串

变量的数据类型可以使用 typeof 操作符来查看:

1
2
3
4
5
typeof "John"                // 返回 string
typeof 3.14 // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object

JavaScript 数字

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

1
2
var x1=34.00;   //使用小数点来写
var x2=34; //不使用小数点来写

极大或极小的数字可以通过科学(指数)计数法来书写:

1
2
var y=123e5;   // 12300000
var z=123e-5; // 0.00123

JavaScript 数组

下面的代码创建名为 cars 的数组:

1
2
3
4
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";

或者 (condensed array):

1
var cars=new Array("Saab","Volvo","BMW");

或者 (literal array):

1
var cars=["Saab","Volvo","BMW"];

数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。


JavaScript 对象

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:

1
var person={firstname:"John", lastname:"Doe", id:5566};

上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。

空格和折行无关紧要。声明可横跨多行:

1
2
3
4
5
var person={
firstname : "John",
lastname : "Doe",
id : 5566
};

对象属性有两种寻址方式:

1
2
name=person.lastname;
name=person["lastname"];

Undefined 和 Null

Undefined 这个值表示变量不含有值。

可以通过将变量的值设置为 null 来清空变量。

1
2
cars=null;
person=null;

声明变量类型

当您声明新变量时,可以使用关键词 “new” 来声明其类型:

1
2
3
4
5
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;

JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。