JavaScript基础
绘制三角形
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<script src="test.js">
</script>
</body>
</html>
function print_triangel(n){
for(var i = 1; i <= n; ++i){
for(var j = 0; j < i; ++j){
document.write("*");
}
document.write("<br>");
}
}
do{
var n = prompt("Input an Integer!");
if(Number(n)<=0 || parseFloat(n)!=parseInt(n)){
console.log(typeof(n));
console.log(n);
alert("请输入正整数!");
}else{
print_triangel(n);
}
break;
}while(n);
JSON
JavaScript object notation
用来传输由属性值或者序列性的值组成的数据对象
没有方法只有属性的对象,其中属性必须用双引号包围
熟悉内建对象的属性与方法
输出格式化日期
function formatDate(d){
var year = d.getFullYear();
var month = d.getMonth()+1;
var date = d.getDate();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
month = month<10?"0"+month:month;
date = date<10?"0"+date:date;
hour = hour<10?"0"+hour:hour;
minute = minute<10?"0"+minute:minute;
second = second<10?"0"+second:second;
var res_part1=[year,month,date].join("/");
var res_part2=[hour,minute,second].join(":");
var res_final=[res_part1,res_part2].join(" ");
console.log(res_final);
"yyyy/MM/dd HH:mm:ss";
}
formatDate(new Date());
写一个函数去掉数组中的重复元素
function clearArray(a){
var res = [];
var existed = new Object();
for(i in a){
if(!existed[a[i]]){
res.push(a[i]);
existed[a[i]]=true;
}
// 低效但是使用buildin api
// if(res.indexOf(a[i])==-1){
// res.push(a[i]);
// }
}
return res;
}
写一个函数判断一个字符串中出现次数最多的字符,并统计这个字符出现的次数
function countChar(s){
res = new Object();
for (c in s){
if(res[s[c]]){
res[s[c]]++;
}else{
res[s[c]]=1;
}
}
res_max=0;
var res_char;
for (k in res){
if(res_max<res[k]){
res_max=res[k];
res_char=k
}
}
console.log(res_char+"出现次数最多,为"+res_max);
}
实现导航栏
来自蓝桥云课
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="styles.css">
<title></title>
</head>
<body>
<div id="menu">
<ul id="list">
<li><a>首页</a></li>
<li><a>HTML</a></li>
<li><a>CSS</a></li>
<li><a>JavaScript</a></li>
<li><a>关于</a></li>
<li><a>帮助</a></li>
</ul>
</div>
<script src="test.js">
</script>
</body>
</html>
#list li {
list-style-type: none;
width: 100px;
height: 50px;
line-height: 50px;
background-color: beige;
text-align: center;
float: left;
}
#list li.current {
background-color: red;
}
#list li {
text-decoration: none;
}
function becomeRed(){
var p = this.parentNode;
for(var i=0; i< p.children.length;++i){
var c = p.children[i];
c.removeAttribute("class");
}
this.className="current";
}
var lis = document.getElementById("list").getElementsByTagName("li");
for(var i = 0; i < lis.length; ++i){
lis[i].onclick=becomeRed;
lis[i].firstElementChild.href="javascript:void(0)";
}
闭包
Closures “close over” their environment, meaning they remember the variables from the outside scope even after the function is returned or the scope has exited.
模拟私有变量
function createCounter() {
let count = 0; // 这个变量是私有的,外部无法直接访问
return {
increment: function() {
count += 1;
return count;
},
decrement: function() {
count -= 1;
return count;
},
getCount: function() {
return count;
}
};
}
const myCounter = createCounter();
console.log(myCounter.getCount()); // 输出: 0
console.log(myCounter.increment()); // 输出: 1
console.log(myCounter.increment()); // 输出: 2
console.log(myCounter.decrement()); // 输出: 1
创建变量
var let const
面向对象编程
函数进阶
HTML5
双标签(又称体标签)
<html></html>
<head></head>
<title></title>
<body></body>
<h1></h1>
<p></p>
<div></div>
<span></span>
<a></a>
<ul></ul>
单标签(又称空标签)
<br />
<!--换行-->
<hr />
<!--水平分隔线-->
<meta />
<img />
常用标签综合
h1 {
text-align:center;
}
#slogan {
text-align: center;
}
#first {
background-color: pink;
width: 500px;
height: 300px;
}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="first">
<h1>实验楼学习教程</h1>
<p id="slogan">学习就上<span><a href="https://www.lanqiao.cn/">实验楼</a></span></p>
<hr />
<p>在实验楼你可以学习的课程有:</p>
<ul>
<li>HTML5基础课程</li>
<li>CSS基础课程</li>
<li>Linux基础课程</li>
<li>...</li>
</ul>
</div>
</body>
</html>
课程表实验
<!doctype html>
<html>
<head>
<title>test</title>
<meta charset='UTF-8'>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<table border="l" width="600px" height="150px" bgcolor="pink">
<caption>课程表</caption>
<tr align="center">
<td colspan="4">时间\日期</td>
<td>一</td>
<td>二</td>
<td>三</td>
<td>四</td>
<td>五</td>
</tr>
<tr align="center">
<td rowspan="2">上午</td>
<td colspan="3">9:30-10:15</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
<tr align="center">
<td colspan="3">10:25-11:10</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
<tr>
<td colspan="9"> </td>
</tr>
<tr align="center">
<td rowspan="2">下午</td>
<td colspan="3">14:30-15:15</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
<tr align="center">
<td colspan="3">15:25-16:10</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
</table>
</body>
</html>
表单综合案例
<!doctype html>
<html>
<head>
<title>test</title>
<meta charset='UTF-8'>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<form name="regist" method="post" action="#">
<p>
姓名:
<input type="text" size="30" maxlength="5"></input>
</p>
<p>
密码:
<input type="password" size="30"></input>
</p>
<p>
性别:
<input type="radio" name="gender" value="male">男</input>
<input type="radio" name="gender" value="female">女</input>
</p>
<p>
爱好:
<input type="checkbox" name="hobby" value="singing">唱歌</input>
<input type="checkbox" name="hobby" value="running">跑步</input>
<input type="checkbox" name="hobby" value="swiming">游泳</input>
</p>
<p>
照片:
<input type="file"> </input>
</p>
<p>
个人描述:
<textarea name="individual description" rows="3" cols="30"></textarea>
</p>
<p>
籍贯:
<select name="birthplace">
<option value="成都">成都</option>
<option value="广州">广州</option>
<option value="杭州">杭州</option>
<option value="武汉">武汉</option>
</select>
</p>
<p>
<button type="submit">提交</button>
<button type="reset">重置</button>
</p>
</form>
</body>
</html>
框架的使用
<!doctype html>
<html>
<head>
<title>test</title>
<meta charset='UTF-8'>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<p>
<a href="https://www.lanqiao.cn/" target="shiyanlou">实验楼</a>
</p>
<iframe
name="shiyanlou"
width="400"
height="400"
frameborder="0">
</iframe>
</body>
</html>
HTML5图片拖放
<!doctype html>
<html>
<head>
<title>canvas</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="canvas.css" />
</head>
<body>
<p>请把图片拖到矩形框中</p>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br />
<img
id="drag1"
src="drag-image.png"
draggable="true"
ondragstart="drag(event)"
/>
<script src="canvas.js">
</script>
</body>
</html>
#div1 {
width: 200px;
height: 100px;
padding: 10px;
border: 1px solid red;
}
function allowDrop(ev){
ev.preventDefault();
}
function drag(ev){
ev.dataTransfer.setData("Text", ev.target.id);
}
function drop(ev){
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
本地留言板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>校园留言板</title>
<link rel="stylesheet" href="webStorage.css"></link>
</head>
<body>
<h1>简单Web留言本</h1>
<textarea id="memo" rows="3" cols="60"></textarea>
<br />
<input type="button" value="新增留言" onclick="saveStorage('memo')">
<input type="button" value="清空留言" onclick="clearStorage()">
<input type="button" value="清除最后一个留言" onclick="clearSingleStorage()">
<hr />
<p id="msg"></p>
<script src="index.js"></script>
</body>
</html>
function saveStorage(id){
var data = document.getElementById(id).value;
var time = new Date().toUTCString();
localStorage.setItem(time, data);
showMsg("msg");
}
function showMsg(id){
var result = '<table border="1">';
for (var i = 0; i < localStorage.length; i++){
var key = localStorage.key(i);
var value = localStorage.getItem(key);
result += "<tr><td>"+value+"</td><td>"+key+"</td></tr>";
}
result += "</table>";
var target = document.getElementById(id);
target.innerHTML = result;
}
function clearStorage(){
localStorage.clear();
showMsg("msg");
}
function clearSingleStorage(){
localStorage.removeItem(localStorage.key(localStorage.length-1));
showMsg("msg");
}
showMsg("msg");
上传图片并显示预览
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件读取</title>
<link rel="stylesheet" href="webStorage.css"></link>
</head>
<body>
<input id="fileDemo" name="fileDemo" type="file" class="file" multiple />
<input type="button" value="显示图片" id="readAsDataURL" onclick="showDataByURL();" />
<input type="button" value="显示文本" id="readAsText" onclick="showDataByText();"/>
<div id="result"></div>
<script src="index.js"></script>
</body>
</html>
function showDataByURL(){
var resultFile = document.getElementById("fileDemo").files[0];
if (resultFile){
var reader = new FileReader();
reader.readAsDataURL(resultFile);
reader.onload = function(e){
var urlData = this.result;
document.getElementById("result").innerHTML += "<img src='"+urlData+"' alt='"+resultFile.name+"'/>";
}
}
}
function showDataByText(){
var resultFile = document.getElementById("fileDemo").files[0];
if (resultFile){
var reader = new FileReader();
reader.readAsText(resultFile);
reader.onload = function(e){
var textData = this.result;
document.getElementById("result").innerHTML += textData;
}
}
}