JavaScript中 BOM操作方法以及递归算法案例

BOM:window操作对象

  一.间隔执行与延迟执行

    间隔执行一段代码(函数):window.setInterval("执行的代码",间隔毫秒数);

<html>
   <body>       
    <span ></span><br />   
    <span ></span><br />      
    <input type="button" value="在这停住" onclick="stop()" />   
   </body>
</html>
<script>
     var c1 = 0;
      var c2 = 0;
      var arr = Array();
      arr.push(window.setInterval("sit1()", 500));
      arr.push(window.setInterval("sit2()", 500));

    function sit1() {
        document.getElementById('s1').innerText = ++c1;
    }

    function sit2() {
        document.getElementById('s2').innerText = ++c2;
    }

    function stop() {
        for(var i in arr) {
            window.clearInterval(arr[i]);
        }
    }
</script>

    清除间隔执行:window.clearInterval(间隔的ID);

    延迟执行代码(函数):window.setTimeout("要执行的代码",延迟毫秒数);

    <script>    
        window.setTimeout(sto,3000);    或者window.setTimeout("sto()",3000)
        function sto(){
            alert('123');
            window.setTimeout(sto,3000);  死循环没有返回值
        }
    </script>        

    清除延迟:window.clearTimeout(延迟的ID)。

  二.页面跳转类型

    第一种(最常用):window.location.href = "http://www.baidu.com";

    第二种(IE专用):window.navigate('http://www.baidu.com');

    第三种: window.open('http://www.baidu.com','_blank','toolbar=no')

         第1部分写要打开的页面地址;

         第2部分写打开的方式,_blank在新窗口打开;_self在本窗口打开;

         第3部分是控制打开的窗口,可以写多个用空格隔开;

         toolbar = no新打开的窗口无工具条

         menubar = no无菜单栏 status = no无状态栏

         width = 100; height = 100 宽度高度

       left = 100 打开的窗口距离左边多少距离

       resizable = no 窗口大小不可调

location = yes 有地址栏

  三.页面刷新:window.location.reload();

  四.页面滚动:window.scrollTo(x,y), y代表纵向滚动

  五.页面调整:window.resizeTo(宽,高); 调整页面宽和高;

  六.window.history对象(历史记录, 通过历史记录可以操作页面前进或者后退)

    window.history.back(); 后退

    window.history.forward();前进

    window.history.go(n);n是正数代表前进n个页面, n是负数代表后退n个页面。

  关于获取各种浏览器可见窗口大小:

    <script>

      function getInfo() {

        var s = "";

          s = " 网页可见区域宽:" document.body.clientWidth;

          s = " 网页可见区域高:" document.body.clientHeight;

          s = " 网页可见区域宽:" document.body.offsetWidth " (包括边线和滚动条的宽)";

          s = " 网页可见区域高:" document.body.offsetHeight " (包括边线的宽)";

          s = " 网页正文全文宽:" document.body.scrollWidth;

          s = " 网页正文全文高:" document.body.scrollHeight;

          s = " 网页被卷去的高(ff):" document.body.scrollTop;

          s = " 网页被卷去的高(ie):" document.documentElement.scrollTop;

          s = " 网页被卷去的左:" document.body.scrollLeft;

          s = " 网页正文部分上:" window.screenTop;

          s = " 网页正文部分左:" window.screenLeft;

          s = " 屏幕分辨率的高:" window.screen.height;

          s = " 屏幕分辨率的宽:" window.screen.width;

          s = " 屏幕可用工作区高度:" window.screen.availHeight;

          s = " 屏幕可用工作区宽度:" window.screen.availWidth;

          s = " 你的屏幕设置是 " window.screen.colorDepth " 位彩色";

          s = " 你的屏幕设置 " window.screen.deviceXDPI " 像素/英寸";

            alert(s);

        }

      </script>


递归算法:

    递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

    一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).

  例:斐波那契数列(0,1,2,3,5,8,13,21,.....)输入第几个数,输出这个这个数的值;  

<script>
  function dg(n) { 
     if(n == 2) {
            return 1
        } else if(n == 1) {
            return 0;
        } else {
            return dg(n - 1) + dg(n - 2);
        }
    }
    var x = parseInt(prompt('第几个数'));
    alert(dg(x));
</script>