javaScript学习笔记(代码实例)

1、使用prompt输入一个整数x

 

var x = prompt("输入一个整数","0");

 

2、输出所有的水仙花数

//水仙花
document.write("水仙花数有:")
var a,b,c,n;
for (var i=100; i<1000;i++) {
n=i.toString();
a=parseInt(n[0]);
b=parseInt(n[1]);
c=parseInt(n[2]);
if(i==a*a*a+b*b*b+c*c*c){
document.write(i+"、");
}
}

 

3、输入三个正整数,判断这三个数能够作为一个三角形的三条边

         var a = prompt("请输入第一条边");
         var b = prompt("请输入第二条边"); 
         var c = prompt("请输入第三条边");
         if(a+b>c&&a+c>b&&b+c>a){
             alert("三角形成立");
         }else{
             alert("不能构成一个三角形");
         }

4、输出100以内的所有质数

        document.write("100以内的质数有:")
        for (var i=2;i<=100;i++) {
            var num = true;//创建一个布尔值,用来保存结果,默认i是质数
            for(var j=2;j<i;j++){
                if(i%j==0){
                num = false;
                }
            }
            //如果是质数,打印i的值
            if(num){
                document.write(i+",");
            }
        }

5、九九乘法表

  for(var a=1;a<=9;a++){
           for(var b=1;b<=a;b++){
               var i = 0;
               i = a*b;
               document.write(b+"*"+a+"="+i+"&nbsp &nbsp")
           }
           document.write("<br />")//每一行循环结束就换行
       }

6、在页面上使用水平线画出一个三角形

(思路:用hr画横线,然后从短线加到长线,这里暂且就加5条吧)

for(var row = 1;row <= 5;row++){
          var html = "<hr width = '"+row*10+"px'>";
           document.write(html+"<br />");
      } 

7、数组排序(数组sort排序)

//比较大小的话可以用两个数相减,根据其结果是否小于0或大于0判断大小

        //从小到大排序:
        //1、先定义一个数组
        var arr=[123,5,89,0,13];
       // arr.sort();
       //document.write(arr);//这里会按照字符串排序,也就是排序的时候只看第一个数字,所以输出的排序是:0,123,13,5,89
        arr.sort(function(m,n){
            if(m-n>0){
                return 1;//表示把数字大的放在后面一位
            }else{
                return -1;//表示把数字小的放在前面一位
            }
        })
        document.write(arr);

8、push添加元素

 
       var arr=[1,2,3,4,5];
       document.write(arr.push("6","7")+"<br />");//6是指将这个数列变成6个数,7是指添加的数
       document.write(arr+"<br />");
       //pop用来删除数组的最后一个元素
       document.write(arr.pop());
       document.write("<br />");
       document.write(arr);
       document.write("<br />")
       //splice比较复杂,前面的两位数字的含义分别是:
       //第一位数字表示的是插入或替换的数,后面的数字代表的是要删除还是插入还是替换
       //示例1:4表示在第五位数插入,0表示原来的数不变,也就是插入一个数,这一个数组会多出一个数
       arr.splice(4,0,"13");
       document.write(arr);
       document.write("<br />");
       //示例2:这里的3表示第4位数,1表示删除第4位数,8表示用来替换被删除的第4位数。
       arr.splice(3,1,"8");
       document.write(arr);

9、向空数组中加入10个随机的整数,随机的整数在1~100之间。

 var arr = [];
      for(var i=1;i<=10;i++){
          arr.push(parseInt(Math.random()*100));
      }
      document.write(arr);
      document.write("<br />");
      //查询数组里最大数和最小数(1、可排序,则第一个数中min,最后一个数是max2、逐一比较其大小)
      
      //4、对上述数组进行降序排序
        arr.sort(function(m,n){
            if(m-n>0){
                return -1;//表示把数字大的放在前面一位
            }else{
                return 1;//表示把数字小的放在后面一位
            }
        })
        document.write("max:"+arr[0]+"<br />");
        document.write("min:"+arr[arr.length-1]+"<br />");
        document.write(arr+"<br />");
      var sum = 0;
      for(var j=0;j<10;j++){
          sum += arr[j];
      }
      
      document.write(sum+"<br />");
      var avg = sum/arr.length;
      document.write(avg+"<br />");

10、用二分查找方式查找数组中是否有10这个数

 /*
     * [binarySearch 二分查找]
     * @param  {[type]} value      [查找元素]
     * @param  {[type]} arr        [数组]
     * @param  {[type]} startIndex [开始索引]
     * @param  {[type]} endIndex   [结束索引]
     * @return {[type]}            [返回查找元素的索引]
     */
      var arr = [];
      for(var i=1;i<=10;i++){
          arr.push(parseInt(Math.random()*100));
      }
      document.write(arr);
      document.write("<br />");
    function binarySearch(value,arr,startIndex,endIndex) {
        //instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
    if(!value|| !(arr instanceof Array)) return;
        var len    = arr.length,
        startIndex = typeof startIndex === "number" ? startIndex : 0,
        endIndex   = typeof endIndex   === "number" ? endIndex   : len-1,
        midIndex   = Math.floor((startIndex + endIndex) / 2),
        midval     = arr[midIndex];
    if(startIndex > endIndex) return ;
    if(midval === value){
        return midIndex;
    }else if (midval > value) {
        return binarySearch(value, arr, startIndex, midIndex - 1);
    }else {
        return binarySearch(value, arr, midIndex + 1, endIndex);
    }
    }
    document.write(binarySearch(10,arr));
var arr = [1,2,3,45,10,8];
    function binarySearch(value,arr,startIndex,endIndex) {
    if(!value|| !(arr instanceof Array)) return;
    var len        = arr.length,
        startIndex = typeof startIndex === "number" ? startIndex : 0,
        endIndex   = typeof endIndex   === "number" ? endIndex   : len-1,
        midIndex   = Math.floor((startIndex + endIndex) / 2),
        midval     = arr[midIndex];
    if(startIndex > endIndex) return ;
    if(midval === value){
        return midIndex;
    }else if (midval > value) {
        return binarySearch(value, arr, startIndex, midIndex - 1);
    }else {
        return binarySearch(value, arr, midIndex + 1, endIndex);
    }
    }
    document.write(binarySearch(10,arr));

11、

//计算数列1 1 2 3 5 8 11的第20项
/*斐波那契数列:1、1、2、3、5、8、13、21、34、……
函数:
使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。
for循环:
从底层向上运算,
a(0)+a(1)->a(1) //第0个数字+第1个数字=第2个数字
a(1)+a(1)->a(2) //第1个数字+第2个数字=第3个数字
a(2)+a(3)->a(5) //第2个数字+第3个数字=第4个数字
······
a(n-1)+a(n-2)->a(n)
因此,在循环中只要定义三个变量,便能将最后的f(n)求出来
*/

function fn(n){
        if(n==1||n==2){
        return 1;}
        //因为斐波那契数列格式为:1、1、2、3、5、8、13、21、34、......,n=1和n=2的时候都是输出1
        return fn(n-1)+fn(n-2);
        //不断调用自身函数,n-1是穿进去的参数的前一次,就是最后n的前一个数字。所以n-2是最后传入参数的前两个数字。
        }
        //用函数写出斐波那契数列
        var n=parseInt(prompt('请输入一个数字'));
        var a1=1;
        var a2=1;
        var a3=0;
        for(var i=2;i<=n;i++){//因为前两个数都是1,所以要从i=2开始,就是前两个数的1+1=2,i的初始值其实是第三个数
        a3=a1+a2;//第三个数等于第一个数加上第二个数
        a1=a2;//第一个数就变成了之前的第二个数
        a2=a3;//第二个数就变成了刚刚的第三个数
        }
        document.write(a3);
        //使用for循环写出斐波那契数列

12、输入一个整数,计算它的位数

    var num = prompt("输入一个整数","0");
        document.write("这是"+num.length+"位数");

13、使用“筛选法”打印100以内的所有质数  

document.write("100以内的质数有:")
        for (var i=2;i<=100;i++) {
            var num = true;//创建一个布尔值,用来保存结果,默认i是质数
            for(var j=2;j<i;j++){
                if(i%j==0){
                num = false;
                }
            }
            //如果是质数,打印i的值
            if(num){
                document.write(i+",");
            }
        }

14、编写方法实现判断一个整数是否是质数的判断。

function zs(num){
            for(i=2;i<num;i++){
                var sum = true;
                if(num%i == 0){
                    return false;
                }
            }return true;
        }
        document.write(zs(8));

 15、编写方法实现统计数组中的数据有几个偶数。

            /*
             * 统计数组中的数据有几个偶数
             * 已知条件:数组
             * 结果:整数,偶数的个数
             */
            function getEvenCount(arr){
                //偶数的个数初始值=0
                var count=0;'’'
                //循环的取出每个元素
                for(var i=0;i<arr.length;i++){
                    //判断该元素是不是偶数,是,偶数的个数+1
                    if(arr[i]%2===0){
                        count++;
                    }
                }
                //返回偶数的个数
                return count;
            }
            console.log(getEvenCount([1,2,3,5,4,8,7]));

 

16、一个球从高处落下,触地后会反弹,且反弹高度是落下高度的一半。编写方法计算小球需要经过几次才会静止(反弹高度<0.00001m认为静止)。

            function getBoundCount(h){
                var count = 0;
                //警告:尽量避免使用小数
                while(h*100000>=1){
                    h /=2;
                    count++;
                }
            return count;
            }
            document.write(getBoundCount(20));

17、编写方法实现:输入2个正整数,输出他们的最大公约数。

        function getMax(a,b){
                //计算两个整数的余数
                var yu = a % b;
                //余数不等于0则循环
                while(yu!=0){
                    //去掉第一个数,赋值为原来的第二个数
                    a=b;
                    //第二个数变成余数
                    b =yu;
                    //计算新的余数
                    yu=a%b;
                }
                
                return b;
        }
        document.write(getMax(4,16));

18、添加按钮(每点击一下都会新增一个命名为secret的元素)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
            <h3>fruit</h3>
        <ul id="fruit">
            <li>apple</li>
            <li>orange</li>
            <li>banana</li>
        </ul>
        <input type="button" onclick="addFruit();" value="new"/>    
        
        <script>
            
        var ul=document.getElementById("fruit");
        var oldCount = ul.getElementsByTagName("li").length;
            
        function addFruit(){
            
        var newCount = ul.getElementsByTagName("li").length;
            if(newCount-oldCount>=2){
                return;
            }
        
        var li = document.createElement("li");
        li.innerHTML="secret";
        li.style.color="cadetblue";
        li.style.fontSize="20px";            
        fruit.appendChild(li);
        }
        
        </script>
    </body>
</html>

19、隔行变色

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <script>
            window.onload=function(){
                var aLi=document.getElementsByTagName('li');
                for(var i=0;i<aLi.length;i++){
                    if(i%2==0){
                        aLi[i].style.backgroundColor='greenyellow';
                    }else{
                        aLi[i].style.backgroundColor='deepskyblue'
                    }
                }
            }
        </script>
    </body>
</html>

20、全选,全不选,反选

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input id="btn1" type="button" value="全选"/>
        <input id="btn2" type="button" value="不选"/>
        <input id="btn3" type="button" value="反选"/>
        <div id="div1">
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        <input type="checkbox" /></br>
        </div>
        <script>
            window.onload=function(){
                var oBtn1=document.getElementById("btn1");
                var oBtn2=document.getElementById("btn2");
                var oBtn3=document.getElementById("btn3");
                var oDiv=document.getElementById('div1');
                var aCh=document.getElementsByTagName("input");
                oBtn1.onclick=function(){
                    for(var i=0;i<aCh.length;i++){
                        aCh[i].checked=true;
                    }
                }
                oBtn2.onclick=function(){
                    for(var i=0;i<aCh.length;i++){
                        aCh[i].checked=false;
                    }
                }
                oBtn3.onclick=function(){
                    for(var i=0;i<aCh.length;i++){
                        if(aCh[i].checked==true){
                            aCh[i].checked=false;
                        }else{
                        aCh[i].checked=true;
                        }
                    }
                }
            }
        </script>
    </body>
</html>

 

(有空会添加新的)

 

posted @ 2019-07-23 11:13  月华君  阅读(404)  评论(0编辑  收藏  举报