响应式网页设计之循环及函数


补充:文章中所有的代码都是写在html文件中,JS代码需要用< script >< /script >标签包起来。

一、循环语句

1.while循环

先判断条件,只要条件为真,while循环体中的代码就会执行,然后再回条件判断,如果条件为假,则跳出循环;如果条件为真,将继续执行。
在这里插入图片描述
语法定义如下所示:

while(条件){  
    //需要执行的js代码  
} 

举一个栗子:小明是一个男孩子,这里有一项运动叫引体向上,只有男生需要去完成这个运动项目,那么我们来写一个while循环

var name = "小明"
var gender = "男";   
while(gender=="男"){  
    alert("你需要完成引体向上");  
} 

注意到了吗?这是一个死循环,因为小明是男孩子,且一直都是,所以while循环的判断条件一直为true;小明会一直做引体向上,直到我们关闭这个程序【现在的小明不仅是数学课代表,还是体育之星了呢】
温馨提示:循环永远不会结束,这可能导致浏览器崩溃喔!

突然良心发现的我为了不累死小明,允许他成年了之后就可以不做引体向上了,于是就有了下面的故事…

var name = "小明"
var gender = "男"; 
var age = 9  
while(age<18){  
    alert(age+"岁的"+name+",你需要完成引体向上,直到你成年"); 
    //一年又一年的度过...
    age = age + 1 
} 
alert(age+"岁的"+name+"恭喜你,你终于成年了,接下来迎接你的是每天5公里的长跑")
//虽然快乐是属于大家的,但是健康是属于你的!!!

个人看法:while循环一般用于“不知道什么时候循环会结束,然后定义一个布尔型来进行控制”,如上面的这个小栗子可以采用接下来分享的for循环来完成

2.do…while循环

先执行循环体中的代码,再判断条件,只要条件为真,while循环体中的代码就会再次执行,然后再进行条件判断,如果条件为假,则跳出循环;如果条件为真,将继续执行。

细心的你发现了吗?do…while循环与while循环的区别了吗?
while:先判断条件,后执行循环体
do…while:先执行循环体,再判断条件
在这里插入图片描述
语法定义如下所示

do {  
    //需要执行的js代码 
} while (条件)

为了验证一下do…while循环是否先执行循环体,后判断条件,这里写一个简单的测试代码:

do{
	alert("循环体中的代码")
}while(false)
alert("循环之外的代码")

有兴趣的朋友可以试试while循环是否先判断条件,后进行循环体喔
在这里插入图片描述

3.for循环

先初始化参数,再判断循环条件,只要条件为真,执行for循环体中的代码后就执行控制条件语句,然后再判断条件,如果条件为真,则继续执行for循环体中的代码,反之条件为假,则跳出循环。

嘶~ 是不是似曾相识啊,感觉和while循环差不多啊,其实for循环有一个特别方便的地方,就是可以指定代码块执行的次数。
在这里插入图片描述
语法定义如下所示

for(初始化参数;循环条件;控制条件){  
    //需要执行的js代码
} 

补充:for(表达式1;表达式2;表达式3),其中的表达式1只执行一次,表达式3也是可以省略的(写在循环体中),但是千万注意,不要弄成死循环喔!

小题目:输出一个九九乘法表(千万不要自己一个一个去打出来喔,提示:需要for循环嵌套,举一反三的时候到了!)

【思考片刻之后…two hours later…】

算了 咱不难为自己(其实是因为我没有分享过循环嵌套…),上代码吧!记得从中体会它是如何得到这个结果的鸭!

for(var i=1;i<=9;i++){
    for(var j=1;j<=i;j++){
        document.write(j+"*"+i+"="+i*j+"&nbsp;&nbsp;&nbsp;")
    }
    document.write("<br>")
}

嵌套循环是先执行外层循环,然后再执行内层循环,如果有朋友学习过C语言、python、java等,就应该知道这其中的执行过程。精致的小伙伴发现了吗?其实这个九九乘法表并没有对整齐,如果你有html的基础,就可以尝试一下用table对齐喔。

4.for…in循环

循环的作用都大同小异,最后一个循环我就不在赘述了,直接进入重点环节,for…in 语句循环的作用:遍历对象的属性。

语法定义如下所示

for(变量名 in 对象名){  
    //需要执行的js代码 
}  

因为目前为止我还没有分享啥是对象的属性,所以这个栗子不太好举呀,但是打了兴奋剂的我怎么可能轻言放弃,转念一想,有了,数组不就是对象吗,我直接整一个数组来示范一下 for…in 循环是咋使用的:

var detective = ["狄仁杰", "福尔摩斯", "柯南", "唐仁"]  
for (var i in detective ) {  
    document.write(detective [i] + "<br/>");  
} 
//输出结果:
狄仁杰
福尔摩斯
柯南
唐仁

您看这个栗子还满意吗?

二、函数

1.自定义函数

自定义函数就是我们自己写的函数;对于函数,我的理解就是一段代码块,用一个外壳包装一下就改名叫函数了,然后给这个函数取个名字,我们之后就可以通过这个函数名,直接使用整个代码块了
在这里插入图片描述
如图所示,即使是采用最原始的肉眼观察法也能看出这个代码块占的位置,比函数名()大很多吧!不过这还不是函数的最大特点,支撑函数这么使用频繁的原因是:函数被调用时执行的可重复使用的代码块(划重点:可重复),这才是它最大的特色。

语法定义如下所示

function name(参数1, 参数2, 参数3) {  
    //要执行的js代码 
    return 返回值  //可以没有返回值
} 

小知识点:局部变量,在函数中声明的变量,会成为函数的局部变量,局部变量只能在函数内访问。

小试牛刀:写一个函数,要求传入两个参数a、b,返回a+b的值(如果你之前没有接触过函数,那么这个例题,你值得一试),提示:返回的值必须赋给一个变量result,然后在控制台中输出result。

function add(a, b) {  
    return a + b  
}  
var result = add(1, 2);  
console.log(result);

2.匿名函数

匿名函数就是没有名字的函数,上面的自定义函数我们必须定义一个函数名,但是匿名函数就不需要,那么问题来了,匿名函数没有名字那我咋找的它,这边建议您可以把它打包赋值给一个变量。

语法定义如下所示

function (参数1, 参数2, 参数3) {  
    //要执行的js代码 
    return 返回值 //可以没有返回值
} 

偷一个小懒,我直接把上面的小试牛刀改为匿名函数啦,然后把刚才的 add()函数名 改为 add变量 打包好函数之后 赋值给 add变量 就OK。

var add = function (a, b) {  
    return a + b  
}  
var result = add(1, 2);  
console.log(result);

3.事件调用

事件调用就像是你在百度搜索知识的时候,点击“百度一下”按钮,百度搜索页就会转到其他页面,这整个过程就是一个事件的调用,触发点就在这个按钮上,来一段代码感受一下:

//第一种
<button onclick="showHello()">Hello</button> 
<script type="text/javascript">  
function showHello(){  
    alert("hello");
} 
</script>

//第二种
<button onclick="showHello()">Hello</button> 
<script type="text/javascript">  
var showHello = function() {  
    alert("hello"); 
}  
</script>

当我们点击Hello按钮的时候,界面就会弹警示框显示“hello”,按钮的事件调用是通过属性onclick来设置的;οnclick="函数名()"即可完成事件调用。

补充:
获取页面输入值:
① document.getElementById(‘Id名’).value //得到值
改变页面的值:
① document.getElementById(“ID名”).value=新值

三、网页小案例

1.题目要求

本次题目需要用到函数的调用及数据类型的转换,搭建这个表格还需要一点html中table的基础,最后还需要亿点点小学数学基础喔!提示:字符串之间的相加是连接,如 “1”+“1”=“11”,要仔细品位。喔,对了还有一点点css样式。
在这里插入图片描述

2.原码奉上

建议先尝试着写一下,自己完成更有成就感喔!
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简易购物车</title>
    <style>
        table{
            border: 2px solid rgb(148, 146, 147);
            width: 800px;
            margin: 0px auto;
        }
        tr{
            border: 0px;
        }
        td{
            text-align: center;
        }
        .input_box{
            border: 0px;
           
        }
        .input_box:focus{
            outline: none;
        }
    </style>
</head>
<body>
    <table border="1px">
        <tr><th colspan="9">简易购物车</th></tr>
        <tr>
            <td>商品名称</td>
            <td colspan="2">数量(件)</td>
            <td colspan="2">单价(元)</td>
            <td colspan="2">运费(元)</td>
            <td colspan="2"><input type="button" name="btn" id="btn" value="合计" onclick="addSum()"></td>
        </tr>
        <tr>
            <td>道具</td>
            <td colspan="2"><input type="number" name="num" id="num" class="input_box"></td>
            <td colspan="2"><input type="number" name="price" id="price" class="input_box"></td>
            <td colspan="2"><input type="number" name="freight" id="freight" class="input_box"></td>
            <td colspan="2"><input type="text" name="result" id="result" class="input_box"></td>
        </tr>
    </table>
    <script>
        function addSum(){           
            var num = Number(document.getElementById('num').value)
            var price = Number(document.getElementById('price').value)
            var freight = Number(document.getElementById('freight').value)
            if(num!=0){
                document.getElementById('result').value = num*price+freight
            }else{
                document.getElementById('result').value = "数量为0,不收钱"
            }
        }
    </script>
</body>
</html>

您如果对文章有其他的见解,欢迎指正~在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PRINT!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值