目录
- JavaScript If…Else 语句
- JavaScript switch 语句
- JavaScript for 循环
- JavaScript while 循环
- JavaScript Break 和 Continue 语句
JavaScript If…Else 语句
条件语句用于基于不同的条件来执行不同的动作。
通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
在 JavaScript 中,我们可使用以下条件语句:
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if…else if…else 语句- 使用该语句来选择多个代码块之一来执行
switch 语句 - 使用该语句来选择多个代码块之一来执行
If 语句
只有当指定条件为 true 时,该语句才会执行代码。
语法
if (condition){ 当条件为 true 时执行的代码}
请使用小写的 if。使用大写字母(IF)会生成 JavaScript 错误!
实例
当时间小于 20:00 时,生成问候 “Good day”:
if (time<20) { x="Good day"; }
x 的结果是:
尝试一下 »
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS教程</title>
</head>
<body>
<p>如果时间早于 20:00,会获得问候 "Good day"。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction(){
var x="";
var time=new Date().getHours();
if (time<20){
x="Good day";
}
document.getElementById("demo").innerHTML=x;
}
</script>
</body>
</html>
请注意,在这个语法中,没有 …else…。您已经告诉浏览器只有在指定条件为 true 时才执行代码。
If…else 语句
请使用 if…else 语句在条件为 true 时执行代码,在条件为 false 时执行其他代码。
语法
if (condition){ 当条件为 true 时执行的代码}else{ 当条件不为 true 时执行的代码}
实例
当时间小于 20:00 时,生成问候 “Good day”,否则生成问候 “Good evening”。
if (time<20) { x="Good day"; } else { x="Good evening"; }
x 的结果是:
Good evening
尝试一下 »
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS教程</title>
</head>
<body>
<p>点击这个按钮,获得基于时间的问候。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction(){
var x="";
var time=new Date().getHours();
if (time<20){
x="Good day";
}
else{
x="Good evening";
}
document.getElementById("demo").innerHTML=x;
}
</script>
</body>
</html>
If…else if…else 语句
使用 if…else if…else 语句来选择多个代码块之一来执行。
语法
if (condition1){
当条件 1 为 true 时执行的代码
}else if (condition2)
{
当条件 2 为 true 时执行的代码
}
else
{
当条件 1 和 条件 2 都不为 true 时执行的代码
}
实例
如果时间小于 10:00,则生成问候 “Good morning”,如果时间大于 10:00 小于 20:00,则生成问候 “Good day”,否则生成问候 “Good evening”:
if (time<10) { document.write("<b>早上好</b>"); } else if (time>=10 && time<16) { document.write("<b>今天好</b>"); } else { document.write("<b>晚上好!</b>"); }
x 的结果是:
晚上好!
尝试一下 »
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS教程</title>
</head>
<body>
<script type="text/javascript">
var d = new Date();
var time = d.getHours();
if (time<10)
{
document.write("<b>早上好</b>");
}
else if (time>=10 && time<16)
{
document.write("<b>今天好</b>");
}
else
{
document.write("<b>晚上好!</b>");
}
</script>
<p>
这个例子演示了 if..else if...else 语句。
</p>
</body>
</html>
范例:
向右移动的熊猫
到达边缘后停止
到达边缘后反向
重复左右移动的飞鸟
X方向位置不断改变
小鸟影片剪辑添加监听事件
知识补充:编程中用到的知识从后面提前先学习一下
HTML DOM setTimeout() 方法
定义和用法
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
语法
setTimeout(code,millisec)
提示和注释
提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
实例:
点击上面的按钮。5 秒后会显示一个消息框。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function timedMsg()
{
var t=setTimeout("alert('5 seconds!')",5000)
}
</script>
</head>
<body>
<form>
<input type="button" value="显示计时的消息框!" onClick = "timedMsg()">
</form>
<p>点击上面的按钮。5 秒后会显示一个消息框。</p>
</body>
</html>
实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
var c=0;
var t;
function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}
</script>
</head>
<body>
<form>
<input type="button" value="开始计时!" onClick="timedCount()">
<input type="text" id="txt">
</form>
<p>请点击上面的按钮。输入框会从 0 开始一直进行计时。</p>
</body>
</html>
不断重复执行的 setTimeout( )
setTimeout( ) 预设只是执行一次, 但我们可以使用一个循环方式, 使到一个setTimeout( ) 再启动自己一次, 就会使到第二个 setTimeout( ) 执行, 第二个又启动第三个, 这样循环下去, 这 setTimeout( ) 就会不断执行。
分析
function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000) ;
}
每隔1000毫秒setTimeout(“timedCount()”,1000)函数调用自己一次。
在 JavaScript, 我们是使用这处说的方法使到一些事项不断执行, 其中一个用途是显示转动时间, 另一个用途是设定跑动文字
移动图片也是类似,只是显示秒数或文字变成图片对象的左边界增加。
跑动文字
- offsetLeft:当前对象到其上级层左部的距离。
- scrollLeft:对象左端滚动出显示范围距离的值。
- offsetWidth:当前对象的宽度值。
一个是scrollTop;一个是scrollLeft
第一个代表页面利用滚动条滚动到下方时,隐藏在滚动条上方的页面的高度;
第二个代表页面利用滚动条滚动到右侧时,隐藏在滚动条左侧的页面的宽度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS教程(安康学院数字媒体技术)</title>
</head>
<body>
<!-- js字体左右移动-->
<script type="text/javascript">
function ScrollImgLeft(){
var speed=50; //设置调用时间
var scroll_div = document.getElementById("scroll_div"); //获取left需要移动的div
function Marquee(){
if(scroll_div.scrollLeft>300)
scroll_div.scrollLeft=0;
else
scroll_div.scrollLeft++;
}
var MyMar=setInterval(Marquee,speed); //每多少秒调用一次该函数
scroll_div.onmouseover=function() {clearInterval(MyMar);} //鼠标移动停止移动事件
scroll_div.onmouseout=function() {MyMar=setInterval(Marquee,speed);} //离开运行移动
}
</script>
<div id="gongao">
<div style="width:500px;height:30px;margin:0 auto;white-space: nowrap;overflow:hidden;" id="scroll_div" class="scroll_div">
<div id="scroll_begin">
欢迎来到前端技术专业,学习JavaScript语言,学习JavaScript语言,著名的网页脚本语言。
</div>
</div>
<script type="text/javascript">setInterval(ScrollImgLeft(),1000);</script>
</div>
</body>
</html>
HTML DOM setInterval() 方法
setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。
HTML DOM Style 对象
Style 对象
Style 对象代表一个单独的样式声明。可从应用样式的文档或元素访问 Style 对象。
使用 Style 对象属性的语法:
document.getElementById(“id”).style.property=“值”
Style 对象的属性:
背景、边框和边距、布局、列表、杂项、定位、打印、滚动条、表格、文本、规范
HTML DOM marginLeft 属性
定义和用法
marginLeft 属性设置元素的左外边距。
向右移动的熊猫
setInterval(function(){
div.style[fx]=i+"px";
i++;
},10)
每隔10毫秒,让div的外边界的左边界值增加1个px。
对象访问属性有两种方法 1、obj.paramName,使用.访问 2、obj[parameName],使用中括号属性名访问 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js向右移动的熊猫</title>
<style>
body{
margin: 0;
padding: 0;
}
input{
display: block;
height:20px;
}
div{
width: 93px;
height:117px;
background:#000;
}
</style>
</head>
<body>
<input type="button" value="运动">
<div><img src="images/panda.png"></div>
<script>
var ipt=document.getElementsByTagName("input")[0];
var div=document.getElementsByTagName("div")[0];
var scr_w=document.documentElement.clientWidth;
ipt.onclick=function(){
fn1("marginLeft",scr_w);
};
function fn1(fx,size){
var i=0;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i++;
},10)
}
</script>
</body>
</html>
向右移动的熊猫,到达右边界停止
setInterval(function(){
div.style[fx]=i+"px";
i++;
if(i>size-100){
clearInterval(t1);
}
},10)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js向右移动的熊猫,到达右边界停止</title>
<style>
body{
margin: 0;
padding: 0;
}
input{
display: block;
height:20px;
}
div{
width: 93px;
height:117px;
background:#000;
}
</style>
</head>
<body>
<input type="button" value="运动">
<div><img src="images/panda.png"></div>
<script>
var ipt=document.getElementsByTagName("input")[0];
var div=document.getElementsByTagName("div")[0];
var scr_w=document.documentElement.clientWidth;
ipt.onclick=function(){
fn1("marginLeft",scr_w);
};
function fn1(fx,size){
var i=0;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i++;
if(i>size-100){
clearInterval(t1);
}
},10)
}
</script>
</body>
</html>
到达边缘后反向
分析:碰撞到右边界前i++ ;碰撞后i–
setInterval(function(){
div.style[fx]=i+"px";
if(i>size-100){
i--;
}
else{
i++;
}
},10)
但运行出现错误,分析原因。
function fn1(fx,size){
var i=0;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i++;
if(i>size-100){
clearInterval(t1);
fn3("marginLeft",scr_w);
}
},10)
}
function fn3(fx,size){
var i=size-100;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i--;
if(i<0){
clearInterval(t1);
fn1("marginLeft",scr_w);
}
},10)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js到达边缘后反向</title>
<style>
body{
margin: 0;
padding: 0;
}
input{
display: block;
height:20px;
}
div{
width: 93px;
height:117px;
background:#000;
}
</style>
</head>
<body>
<input type="button" value="运动">
<div><img src="images/panda.png"></div>
<script>
var ipt=document.getElementsByTagName("input")[0];
var div=document.getElementsByTagName("div")[0];
var scr_w=document.documentElement.clientWidth;
ipt.onclick=function(){
fn1("marginLeft",scr_w);
};
function fn1(fx,size){
var i=0;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i++;
if(i>size-100){
clearInterval(t1);
fn3("marginLeft",scr_w);
}
},10)
}
function fn3(fx,size){
var i=size-100;
var t1=setInterval(function(){
div.style[fx]=i+"px";
i--;
if(i<0){
clearInterval(t1);
fn1("marginLeft",scr_w);
}
},10)
}
</script>
</body>
</html>
扩展
缓动效果
鼠标跟随
JavaScript switch 语句
使用 switch 语句来选择要执行的多个代码块之一。
工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。
案例
贪吃蛇
<!DOCTYPE html>
<canvas id="gc" width="400" height="400"></canvas>
<script>
window.onload=function() {
canv=document.getElementById("gc");
ctx=canv.getContext("2d");
document.addEventListener("keydown",keyPush);
setInterval(game,1000/15);
}
px=py=10;
gs=tc=20;
ax=ay=15;
xv=yv=0;
trail=[];
tail = 3;
function game() {
px+=xv;
py+=yv;
if(px<0) {
px= tc-1;
}
if(px>tc-1) {
px= 0;
}
if(py<0) {
py= tc-1;
}
if(py>tc-1) {
py= 0;
}
ctx.fillStyle="green";
ctx.fillRect(0,0,canv.width,canv.height);
ctx.fillStyle="lime";
for(var i=0;i<trail.length;i++) {
ctx.fillRect(trail[i].x*gs,trail[i].y*gs,gs-2,gs-2);
if(trail[i].x==px && trail[i].y==py) {
tail = 5;
}
}
trail.push({x:px,y:py});
while(trail.length>tail) {
trail.shift();
}
if(ax==px && ay==py) {
tail++;
ax=Math.floor(Math.random()*tc);
ay=Math.floor(Math.random()*tc);
}
ctx.fillStyle="white";
ctx.fillRect(ax*gs,ay*gs,gs-2,gs-2);
}
function keyPush(evt) {
switch(evt.keyCode) {
case 37:
xv=-1;yv=0;
break;
case 38:
xv=0;yv=-1;
break;
case 39:
xv=1;yv=0;
break;
case 40:
xv=0;yv=1;
break;
}
}
</script>