蓝鸥原生JS:js中的程序控制语句拓展


蓝鸥零基础学习HTML5—html+css基础

http://11824614.blog.51cto.com/11814614/1852769


拓展:for...in循环

for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:

var o = {

    name: 'Jack',

    age: 20,

    city: 'Beijing'

};for (var key in o) {

    alert(key); // 'name''age''city'

}

input的checked属性

  在学习HTML是我们都知道:把input标签的type设置为checkbox后,就是一个复选框了,如果checked属性是true,那么选框被选中;如果checked属性设置为false,则选框是取消选中状态。下边,我们使用js来设置选框的状态.

  示例代码:通过点击切换按钮,实现选框的选中】取消选中效果

<!DOCTYPE html><html>

    <head>

        <meta charset="utf-8">

        <title></title>

    </head>

    <body>

        <input type="button" value="切换" id="btn1" />

        <input type="checkbox" id="ch1" />

    </body>

    <script type="text/javascript">

        var btn1 = document.getElementById("btn1");

        var ch1 = document.getElementById("ch1");

 

        btn1.onclick = function (){

 

            if (ch1.checked){

                ch1.checked = false;

            }else{

                ch1.checked = true;

            }

 

        }

    </script></html>

  练习:实现类似购物车的“全选”、“反选”效果

  示例代码如下:

<!DOCTYPE html><html>

    <head>

        <meta charset="utf-8">

        <title></title>

    </head>

    <body>

        <input type="button" value="全选" id="btn1" />

        <input type="button" value="反选" id="btn2" />

        <input type="checkbox" id="ch1" />

        <ul id="ul1">

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

            <li><input type="checkbox" /></li>

        </ul>

    </body>

    <script type="text/javascript">

        var btn1 = document.getElementById("btn1");

        var btn2 = document.getElementById("btn2");

        var ch1 = document.getElementById("ch1");

        var ul1 = document.getElementById("ul1");

        var inputs = ul1.getElementsByTagName("input");//        alert(inputs.length);

 

        btn1.onclick = function (){

 

            for (var i=0; i<inputs.length; i++){

 

                inputs[i].checked = true;

            }

            ch1.checked = true;

        }

        btn2.onclick = function (){

            var num = 0;

            for (var i=0; i<inputs.length; i++){

                if (inputs[i].checked==false){

                    num++;

                }

                inputs[i].checked = !inputs[i].checked;

            }

            if (num == inputs.length){

                alert("ok");

            }

        }

 

    </script></html>

while循环

for循环在已知循环的初始和结束条件时非常有用。而上述忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。

while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

var x = 0;var n = 99;while (n > 0) {

    x = x + n;

    n = n - 2;

}

x; // 2500

  在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。

do ... while循环

do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:

var n = 0;do {

    n = n + 1;

while (n < 100);

n; // 100

  用do { ... } while()循环要小心,循环体会至少执行1次,而for和while循环则可能一次都不执行。