Javascript基础
1 实验类型
验证型,2学时,必选实验
2 实验目的
掌握Javascript基础语法;熟悉JavaScript编写简单的Web应用程序
3 实验要求
验证参考代码;修改参考代码,实现自己的设计;将关键结果截图及源代码整理成实验报告
4 实验环境
Windows7、Microsoft Edge/Chrome/Firefox等浏览器、Visual Studio Code(VS Code)
5 实验步骤
创建工作目录:{盘符}:/{学号}/exp2_3
, 后续文件均存放在工作目录
变量
编写Javascript代码,定义并使用变量,理解变量作用域的概念。
创建文件:js_var.html
,调试以下代码,观察并解释窗口中显示的结果:
变量 |
---|
| <script language="javascript">
var x = 13, y = 29;
function test() {
var num, y = 10;
num = x + y;
x++
document.write("内部的num的值为:" + num + "<br>");
}
test();
document.write("测试x的值为:" + x + "<br>");
document.write("测试y的值为:" + y + "<br>");
document.write("外部的num的值为:" + num + "<br>");
</script>
|
数组与循环
创建文件:js_array.html
,使用数组存储一周的星期名称,使用数组遍历的方式输出数组中的内容,参考代码:
数组与循环 |
---|
| <script>
// 定义一个数组,存储一周的星期名称
var weekDays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"];
// 使用for循环遍历数组并输出每个元素
for (var i = 0; i < weekDays.length; i++) {
console.log(weekDays[i]);
}
</script>
|
控制语句与函数
创建文件:js_if.html
,通过分支控制语句及函数调用实现以下功能:根据时间段的不同,在网页中显示不同的问候语,12点以前,则输出“早上好!”的问候语,颜色为绿色;12点至18点,则输出“下午好!”颜色为黄色;18点以后输出“晚上好!”颜色为黑色。
参考代码:
控制语句与函数 |
---|
| <script language="javascript">
var curday = new Date();
hours = curday.getHours();
document.write("现在是:" + hours + "点,");
if (hours <= 12) {
document.write("<font color='00ff00'>早上好!</font>");
} else if (hours <= 18) {
document.write("<font color='ffff00'>中午好!</font>");
} else {
document.write("<font color='000000'>晚上好!</font>");
}
</script>
|
事件处理
创建文件:js_event.html
,处理Html元素(如按钮,文本框)的常见事件,如下表:
元素类型 |
事件类型 |
事件处理函数 |
<button> |
mousedown |
handleMouseDown() |
<button> |
mouseup |
handleMouseUp() |
<button> |
mouseover |
handleMouseOver() |
<button> |
mouseout |
handleMouseOut() |
<button> |
click |
handleClick() |
<input> |
focus |
handleFocus() |
<input> |
blur |
handleBlur() |
参考代码:
事件处理 |
---|
| <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>
// 定义事件处理函数
function handleClick() {
var message = document.getElementById('message');
message.textContent = '你点击了按钮!';
}
function handleMouseDown() {
var button = document.getElementById('myButton');
button.classList.add('active');
var message = document.getElementById('message');
message.textContent = '鼠标按下了按钮!';
}
function handleMouseUp() {
var button = document.getElementById('myButton');
button.classList.remove('active');
var message = document.getElementById('message');
message.textContent = '鼠标松开了按钮!';
}
function handleMouseOver() {
var button = document.getElementById('myButton');
button.classList.add('active');
var message = document.getElementById('message');
message.textContent = '鼠标悬停在按钮上!';
}
function handleMouseOut() {
var button = document.getElementById('myButton');
button.classList.remove('active');
var message = document.getElementById('message');
message.textContent = '鼠标离开了按钮!';
}
function handleFocus() {
var input = document.getElementById('myInput');
input.style.borderColor = 'blue'; // 当输入框获得焦点时,改变边框颜色
var message = document.getElementById('message');
message.textContent = '输入框获得了焦点!';
}
function handleBlur() {
var input = document.getElementById('myInput');
input.style.borderColor = ''; // 当输入框失去焦点时,移除边框颜色
var message = document.getElementById('message');
message.textContent = '输入框失去了焦点!';
}
</script>
</head>
<body>
<button id="myButton" onmousedown="handleMouseDown()" onmouseup="handleMouseUp()" onmouseover="handleMouseOver()"
onmouseout="handleMouseOut()" onclick="handleClick()">点击我</button>
<input type="text" id="myInput" placeholder="输入文本" onfocus="handleFocus()" onblur="handleBlur()">
<p id="message">你还没有进行任何操作。</p>
</body>
</html>
|
JSON
创建文件:js_event.html
,使用JSON数组存放学生信息:学号、姓名、年龄,在界面中显示学生信息,参考代码:
JSON |
---|
| <!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>学生信息</h1>
<table id="studentTable" border="1">
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<!-- 这里将通过JavaScript动态插入学生信息 -->
</tbody>
</table>
<script>
// 假设这是从服务器获取的JSON数据
var studentData = [
{ "学号": "20210001", "姓名": "张三", "年龄": 20 },
{ "学号": "20210002", "姓名": "李四", "年龄": 21 },
{ "学号": "20210003", "姓名": "王五", "年龄": 22 }
];
// 获取表格的tbody元素
var tbody = document.getElementById('studentTable').getElementsByTagName('tbody')[0];
// 遍历JSON数据并创建表格行
studentData.forEach(function (student) {
var row = tbody.insertRow();
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = student["学号"];
cell2.innerHTML = student["姓名"];
cell3.innerHTML = student["年龄"];
});
</script>
</body>
</html>
|
综合
弹出框
创建文件:js_comprehensive.html
,使用Html+css+js实现一个可关闭的弹出框,参考代码如下:
弹出框 |
---|
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<head>
<script>
function init() {
// 获取弹窗
var modal = document.getElementById('myModal');
// 打开弹窗的按钮对象
var btn = document.getElementById("myBtn");
// 获取 <span> 元素,用于关闭弹窗
var span = document.querySelector('.close');
// 点击按钮打开弹窗
btn.onclick = function () {
modal.style.display = "block";
}
// 点击 <span> (x), 关闭弹窗
span.onclick = function () {
modal.style.display = "none";
}
// 在用户点击其他地方时,关闭弹窗
window.onclick = function (event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
}
</script>
<style>
/* 弹窗 (background) */
.modal {
display: none;
/* 默认隐藏 */
position: fixed;
/* 固定定位 */
z-index: 1;
/* 设置在顶层 */
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.4);
}
/* 弹窗内容 */
.modal-content {
background-color: #fefefe;
margin: 15% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
/* 关闭按钮 */
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
</style>
</head>
<body onload="init()">
<!-- 打开弹窗按钮 -->
<button id="myBtn">打开弹窗</button>
<!-- 弹窗 -->
<div id="myModal" class="modal">
<!-- 弹窗内容 -->
<div class="modal-content">
<span class="close">×</span>
<p>弹窗中的文本...</p>
</div>
</div>
</body>
</html>
|
表单校验
创建文件:js_validation.html
,使用Javascript对Html基础
实验中创建的学生表的表单数据进行校验,至少实现以下规则:
元素 |
校验规则 |
学号 (no) |
- 不能为空 - 必须是数字 |
姓名 (name) |
- 不能为空 |
性别 (gender) |
- 必须是"男"或"女" |
年龄 (age) |
- 不能为空 - 必须是正整数 |
所在系 (dept) |
- 不能为空 |
代码模板如下:
表单校验 |
---|
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>学生表</title>
<script>
function validateForm() {
var no = document.forms["studentForm"]["no"].value;
if (no == "") {
alert("学号不能为空");
return false;
}
//完成后续校验
}
</script>
</head>
<body>
<h3>学生表</h3>
<div class="container">
<form name="studentForm" onsubmit="return validateForm()" action="#">
<div>
<label for="no">学号:</label>
<input type="text" id="no" name="no" placeholder="请输入学号..">
</div>
<!-- 完整代码参考html部分实验 -->
<button type="submit">提交</button>
</form>
</div>
</body>
</html>
|
拓展练习
-
使用JSON数组存放学生信息:学号、姓名、年龄,编写代码计算学生的最高、最低、平均年龄以及标准差
参考JSON步骤
-
为课程表表单界面增加校验功能,至少实现4种规则的校验
参考表单校验步骤