10.1 JavaScript概述
JavaScript是一种轻量级的编程语言,它被广泛用于增强网页的交互性,为用户提供更丰富的网页体验。以下是JavaScript的几个核心特性。
10.1.1 JavaScript简介
JavaScript的语法简单,易于学习,使得开发者能够快速上手并开发出动态的网页应用。
10.1.1.2 动态性
JavaScript能够在网页加载后动态地修改网页内容,无需重新加载页面,这为用户带来了流畅的体验。
10.1.1.3 跨平台性
JavaScript可以在多种浏览器和平台上运行,这使得开发者能够为更广泛的用户群体提供服务。
10.1.1.4 安全性
JavaScript具有严格的安全机制,以防止恶意代码的执行,保护用户的数据安全。
10.1.1.5 基于对象的语言
JavaScript是一种基于对象的脚本语言,它支持面向对象的编程风格,使得代码更加模块化和可重用。
10.1.2 JavaScript入门案例
在本节中,我们将通过一个简单的入门案例来展示JavaScript的基本用法。例如,我们可以通过JavaScript来改变网页上的文本内容,或者响应用户的点击事件。
<!--示例程序10.2-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>head中定义的JS函数</title>
<script type="text/javascript">
function message() {
alert("调用JS函数!sum(100,200)=" + sum(100, 200));
}
function sum(x, y) {
return x + y;
} //返回函数计算结果
</script>
</head>
<body>
<h4>head标记内定义两个JS函数</h4>
<p>无返回值函数:message()</p>
<p>有返回值函数:sum(x,y)</p>
<form>
<input name="btncal" type="button" onclick="message();" value="计算并显示两个数的和">
</form>
</body>
</html>
10.1.3 JavaScript放置的位置
JavaScript代码可以放置在HTML文档的不同位置,以适应不同的使用场景:
10.1.3.1 head标记中的脚本
将JavaScript代码放在<head>标签中,可以在页面加载时就执行脚本,但这样可能会阻塞页面的渲染。
10.1.3.2 body标记中的脚本
将JavaScript代码放在<body>标签的底部,可以确保在执行脚本之前页面已经完全加载。
10.1.3.3 外部js文件中的脚本
将JavaScript代码放在外部文件中,可以提高代码的可维护性,并允许多个页面共享相同的脚本。
10.1.3.4 事件处理代码中的脚本
事件处理代码通常放在HTML元素的事件属性中,如onclick,用于响应用户的交互。
案例代码
<!--示例程序10.3-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>body中的JavaScript脚本</title>
</head>
<body>
<p id="clk">Clicke Here</p>
<script type="text/javascript">
var demo = document.getElementById("clk");
demo.onclick = msg;
function msg() {
alert("我是body中的JavaScript脚本");
}
</script>
</body>
</html>
<!--示例程序10.4-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>调用外部js文件的JavaScript函数</title>
<script type="text/javascript" src="js/demo.js">
document.write("这条语句没有执行,被忽略掉了!");
</script>
</head>
<body>
<form>
<input name="btn1" type="button" onclick="message()" value="调用外部js文件的JavaScript函数">
</form>
</body>
</html>
10.2 JavaScript语法
10.2.1 语法基础
JavaScript的语法基础是编写有效脚本的关键:
10.2.1.1 区分大小写
JavaScript是区分大小写的语言,这意味着变量名var1和Var1会被视为两个不同的变量。
10.2.1.2 变量不区分类型
JavaScript是一种弱类型语言,变量可以存储任何类型的数据,无需声明变量的类型。
10.2.1.3 每行代码结尾可以省略分号
虽然JavaScript允许省略每行代码结尾的分号,但为了代码的清晰性和避免潜在的错误,建议使用分号。
10.2.1.4 注释与C、C++、Java等语言相同
JavaScript支持单行(//)和多行(/* ... */)注释,这与C、C++和Java等语言相同。
10.2.2 标识符和常用变量
10.2.2.1 标识符
标识符是变量、函数等的名称,它必须以字母、下划线或美元符号开始,后面可以跟字母、数字或下划线。
10.2.2.2 变量声明
在JavaScript中,可以使用var、let或const关键字来声明变量。
10.2.2.3 变量类型
JavaScript支持多种数据类型,包括数字、字符串、布尔值、对象等。
10.2.3 运算符与表达式
JavaScript提供了丰富的运算符来构建表达式:
10.2.3.1 算术运算符和表达式
算术运算符如+、-、*、/等,用于执行基本的数学运算。
10.2.3.2 关系运算符和表达式
关系运算符如==、===、!=、!==等,用于比较两个值。
10.2.3.3 逻辑运算符和表达式
逻辑运算符如&&、||等,用于构建逻辑表达式。
10.2.3.4 赋值运算符和表达式
赋值运算符如=,用于将值赋给变量。
10.2.3.5 条件运算符和表达式
条件运算符(三元运算符)?:,用于基于条件选择两个值中的一个。
10.2.3.6 逗号运算符和表达式
逗号运算符,,用于在一条语句中执行多个表达式。
10.2.4 程序设计
10.2.4.1 条件分支语句
条件分支语句如if、else if、else,用于根据不同的条件执行不同的代码块。
10.2.4.2 循环语句
循环语句如for、while、do...while,用于重复执行一段代码。
10.2.5 函数
10.2.5.1 定义函数
函数是一段可以重复使用的代码块,可以通过关键字function或ES6的箭头函数语法来定义。
10.2.5.2 函数返回值
函数可以通过return关键字返回值。
10.2.5.3 函数调用
定义函数后,可以通过函数名加括号来调用函数。
<!--示例程序10.6-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>函数调用</title>
<script type="text/javascript">
function sayHello() {
alert("Hello World!");
}
</script>
</head>
<body>
<button onclick="sayHello()">单击这里</button>
</body>
</html>
10.3 JavaScript对象
10.3.1 对象基础
10.3.1.1 概述
对象是JavaScript中存储数据的一种方式,它由属性和方法组成。
10.3.1.2 属性
属性是对象的变量,用于存储数据。
10.3.1.3 方法
方法是对象的函数,用于执行操作。
10.3.2 常用对象
JavaScript提供了一些内置对象,用于与浏览器交互:
10.3.2.1 window对象
window对象代表浏览器窗口,提供了许多与窗口相关的属性和方法。
10.3.2.2 document对象
document对象代表整个HTML文档,允许JavaScript访问和修改页面内容。
<!--示例程序10.10-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Document属性</title>
</head>
<body>
<img src="img/1.bmp" BORDER="0" alt="" /><br />
<script type="text/javascript">
document.write("文件地址:" + document.location + "<br/>")
document.write("文件标题:" + document.title + "<br/>");
document.write("图片路径:" + document.images[0].src + "<br/");
</script>
</body>
</html>
10.3.2.3 location对象
location对象提供了与当前浏览器地址栏中URL相关的属性和方法。
<!--示例程序10.12-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>location对象使用</title>
<script type="text/javascript">
function currLocation() {
alert(window.location)
}
function newLocation() {
window.location = "示例程序10.10.html"
}
</script>
<body>
<input type="button" onclick="currLocation()" value="显示当前的URL" />
<input type="button" onclick="newLocation()" value="改变URL" />
</body>
</html>
10.3.2.4 navigator对象
navigator对象包含了有关用户浏览器的信息。
10.3.2.5 screen对象
screen对象包含了有关用户屏幕的信息。
10.4 JavaScript事件
10.4.1 事件及事件处理
事件是用户或浏览器触发的动作,如点击、按键等。事件处理是JavaScript响应这些事件的方式。
10.4.2 常用事件
JavaScript支持许多内置事件,如click、mouseover、keydown等。
10.4.3 事件应用举例
例如,当用户点击一个按钮时,改变页面上的文本内容。
<!--示例程序10.17-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>键盘事件</title>
<script type="text/javascript">
function keyDown() {
alert("你按下了按键");
if (event.ctrlKey) {
alert("你按下了Ctrl键");
}
}
function keyPress() {
alert("你按下了键,并且释放了按键");
}
</script>
</head>
<body onkeydown="keyDown()" onkeypress="keyPress()">
</body>
</html>
<!--示例程序10.17-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>键盘事件</title>
<script type="text/javascript">
function keyDown() {
alert("你按下了按键");
if (event.ctrlKey) {
alert("你按下了Ctrl键");
}
}
function keyPress() {
alert("你按下了键,并且释放了按键");
}
</script>
</head>
<body onkeydown="keyDown()" onkeypress="keyPress()">
</body>
</html>
10.5 综合案例——轮播广告
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图示例</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
text-decoration: none;
}
body {
padding: 20px;
}
#container {
position: relative;
width: 600px;
height: 400px;
border: 1px solid #333;
overflow: hidden;
margin-left: auto;
margin-right: auto;
}
#list {
position: absolute;
z-index: 1;
width: 4200px;
height: 400px;
}
#list img {
float: left;
width: 600px;
height: 400px;
}
#buttons {
position: absolute;
left: 250px;
bottom: 20px;
z-index: 2;
height: 10px;
width: 100px;
}
#buttons span {
float: left;
margin-right: 5px;
width: 10px;
height: 10px;
border: 1px solid #fff;
border-radius: 50%;
background: #333;
cursor: pointer;
}
#buttons span.on {
background: orangered;
}
.arrow {
position: absolute;
top: 180px;
z-index: 2;
display: none;
width: 40px;
height: 40px;
font-size: 36px;
font-weight: bold;
line-height: 39px;
text-align: center;
color: #fff;
background-color: RGBA(0, 0, 0, .3);
cursor: pointer;
}
.arrow:hover {
background-color: RGBA(0, 0, 0, .7);
}
#container:hover .arrow {
display: block;
}
#prev {
left: 20px;
}
#next {
right: 20px;
}
</style>
<script type="text/javascript">
window.onload = function() {
var container = document.getElementById('container');
var list = document.getElementById('list');
var buttons = document.getElementById('buttons').getElementsByTagName('span');
var prev = document.getElementById('prev');
var next = document.getElementById('next');
var index = 1;
var timer;
function animate(offset) {
var newLeft = parseInt(list.style.left) + offset;
list.style.left = newLeft + 'px';
if (newLeft > -600) {
list.style.left = -3000 + 'px';
}
if (newLeft < -3000) {
list.style.left = -600 + 'px';
}
}
function play() {
timer = setInterval(function() {
next.onclick();
}, 2000);
}
function stop() {
clearInterval(timer);
}
function buttonsShow() {
for (var i = 0; i < buttons.length; i++) {
if (buttons[i].className == "on") {
buttons[i].className = "";
}
}
buttons[index - 1].className = "on";
}
prev.onclick = function() {
index -= 1;
if (index < 1) {
index = 5;
}
buttonsShow();
animate(600);
};
next.onclick = function() {
index += 1;
if (index > 5) {
index = 1;
}
animate(-600);
buttonsShow();
};
for (var i = 0; i < buttons.length; i++) {
(function(i) {
buttons[i].onclick = function() {
var clickIndex = parseInt(this.getAttribute('index'));
var offset = 600 * (index - clickIndex);
animate(offset);
index = clickIndex;
buttonsShow();
};
})(i);
}
container.onmouseover = stop;
container.onmouseout = play;
play();
}
</script>
</head>
<body>
<div id="container">
<div id="list" style="left: -600px;">
<img src="img/p5.jpg" alt="5" />
<img src="img/p1.jpg" alt="1" />
<img src="img/p2.jpg" alt="2" />
<img src="img/p3.jpg" alt="3" />
<img src="img/p4.jpg" alt="4" />
<img src="img/p5.jpg" alt="5" />
<img src="img/p1.jpg" alt="1" />
</div>
<div id="buttons">
<span index="1" class="on"></span>
<span index="2"></span>
<span index="3"></span>
<span index="4"></span>
<span index="5"></span>
</div>
<a href="javascript:;" id="prev" class="arrow"><</a>;
<a href="javascript:;" id="next" class="arrow">></a>;
</div>
</body>
</html>