4 BOM编程

编程基础

全称 Browser Object Model,浏览器对象模型。

JavaScript是由浏览器中内置的javascript脚本解释器程序来执行javascript脚本语言的。

为了便于对浏览器的操作,javascript封装了对浏览器的各个对象使得开发者可以方便的操作浏览器。

1.1. BOM对象:

1.2. window 对象

Window 对象是 JavaScript 层级中的顶层对象。

Window 对象代表一个浏览器窗口或一个框架。

Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。

1.2.1. window中的方法

document 对 Document 对象的只读引用

location 用于窗口或框架的 Location 对象

history 对 History 对象的只读引用。

document.tilte 设置网页的标题

moveto()  将窗口左上角的屏幕位置移动到指定的 x 和 y 位置。

moveby()    相对于目前的位置移动。

resizeTo()   调整当前浏览器的窗口。

open() 打开新窗口显示指定的URL(有的浏览器中是打一个新的选项卡)

setTimeout(vCode, iMilliSeconds) 超时后执行代码。

setInterval(vCode, iMilliSeconds) 定时执行代码,第一次也是先待,到时再执行。

2. 事件

a) 事件说明

基本上所有的HTML元素中都可以指定事件属性。

每个元素支持什么样事件应查询文档。

所有的事件属性都是以on开头,后面的是事件的触发方式,如:

onclick,表示单击

onkeydown,表示键按下

...

b) 常用的事件类型:

鼠标点击相关:

onclick 在用户用鼠标左键单击对象时触发。

ondblclick 当用户双击对象时触发。

onmousedown 当用户用任何鼠标按钮单击对象时触发。

onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。

鼠标移动相关:

onmouseout  当用户将鼠标指针移出对象边界时触发。

onmousemove 当用户将鼠标划过对象时触发。

焦点相关的:

onblur 在对象失去输入焦点时触发。

onfocus 当对象获得焦点时触发。

其他:

onchange 当对象或选中区的内容改变时触发。

onload 在浏览器完成对象的装载后立即触发。

onsubmit 当表单将要被提交时触发。

location 对象

Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息。

location中的重要方法:

href属性 设置或获取整个 URL 为字符串。

reload() 重新装入当前页面

1.2.2. screen 对象

Screen 对象是由 JavaScript runtime engine 自动创建的,包含有关客户机显示屏幕的信息。

属性:

availHeight 获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。

availWidth 获取系统屏幕的工作区域宽度,排除 Windows 任务栏。

height 获取屏幕的垂直分辨率。

width 获取屏幕的水平分辨率。

示例:

document.write("屏幕工作区: " + screen.availHeight + ", " + screen.availWidth + "<br>");

document.write("屏幕分辨率: " + screen.height + ", " + screen.width + "<br>");

1.2.3. document对象

该对象代表整个文档页面

对象的集合:

all     获取页面所有元素对象

forms   获取页面所有表单对象

images 获取页面所有图片对象

links   获取所有超链接或area对象

Code Window对象

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function showAd() {
            open("ad.html", "_blank", "height=400px,width=400px,toolbar=no,location=no,top=200px");
        }
        setTimeout("showAd()", 2000);
         //var id = window.setInterval("showAd()",2000);
        function small() {
            resizeTo(300, 200); //相对于原本窗口改变指定的大小。
        }

        function move() {
            for (var i = 0; i < 100; i++) {
                window.moveBy(50, 0); // 相对于原来的窗口移动指定的x、y值。
                moveBy(0, 50);
                window.moveBy(-50, 0);
                window.moveBy(0, -50);
            }
        }

        function move2() {
            window.moveTo(500, 200);
        }

        function clearTest() {
            window.clearInterval(id);
        }
    </script>

    <body>
        <input type="button" onclick="showAd()" value="下载电影" />
        <input type="button" onclick="small()" value="变小" />
        <input type="button" onclick="move()" value="moveBy" />
        <input type="button" onclick="move2()" value="moveTo" />
        <input type="button" onclick="clearTest()" value="取消定时任务" />
    </body>

</html>

事件:
        注册事件的方式:
            
            方式一: 直接在html元素上注册
                <body onload="ready()">
                    
                function ready(){
                    alert("body的元素被加载完毕了..");    
                }
    
            
            方式二:可以js代码向找到对应的对象再注册。 推荐使用。
            
            var bodyNode = document.getElementById("body");
            
            bodyNode.onload = function(){
                alert("body的元素被加载完毕");    
            }

常用的事件:

鼠标点击相关:
        onclick 在用户用鼠标左键单击对象时触发。
        ondblclick 当用户双击对象时触发。
        onmousedown 当用户用任何鼠标按钮单击对象时触发。
        onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。

鼠标移动相关:
        onmouseout  当用户将鼠标指针移出对象边界时触发。
        onmousemove 当用户将鼠标划过对象时触发。

焦点相关的:
        onblur 在对象失去输入焦点时触发。
        onfocus 当对象获得焦点时触发。

其他:
        onchange 当对象或选中区的内容改变时触发。
        onload 在浏览器完成对象的装载后立即触发。
        onsubmit 当表单将要被提交时触发。

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function clickTest() {
            alert("单击..");
        }

        function dbClick() {
            alert("双击..");
        }

        function showTime() {
            var timeSpan = document.getElementById("timeSpan");
            var date = new Date().toLocaleString();
            timeSpan.innerHTML = date.fontcolor("red");
        }

        function hideTime() {
            var timeSpan = document.getElementById("timeSpan");
            timeSpan.innerHTML = "";
        }

        function showInfo() {
            var timeSpan = document.getElementById("userName");
            timeSpan.innerHTML = "用户名是由6位的英文与数字组成".fontcolor("green");
        }

        function hideInfo() {
            var timeSpan = document.getElementById("userName");
            timeSpan.innerHTML = "";
        }

        function change() {
            alert("城市改变了..");
        }
    </script>

    <body>

        <input type="button" onclick="clickTest()" value="单击" />
        <input type="button" ondblclick="dbClick()" value="双击" />
        <span onmousemove="showTime()" onmouseout="hideTime()">查看当前系统时间:</span><span id="timeSpan"></span> 用户名
        <input type="text" onfocus="showInfo()" onblur="hideInfo()" /> <span id="userName"></span>

        <select onchange="change()">
            <option>广州</option>
            <option>深圳</option>
            <option>上海</option>
        </select>

    </body>

</html>

地址栏对象(Location)
    href : 设置以及获取地址栏的对象
    reload() 刷新当前的页面

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function showURL() {
            alert(location.href);
        }

        function download() {
            location.href = "http://www.baidu.com";
        }

        function rafresh() {
            location.reload();
        }
        window.setInterval("rafresh()", 1000);
    </script>

    <body>

        <input type="button" onclick="showURL()" value="显示地址栏" />
        <span onclick="download()">下载电影</span>

    </body>

</html>

Screen(屏幕)对象
    availHeight    获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。     
    availWidth    获取系统屏幕的工作区域宽度,排除 Windows 任务栏。     
    height        获取屏幕的垂直分辨率。
    width        获取屏幕的水平分辨率。

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        document.write("获取系统屏幕的工作区域高度:" + screen.availHeight + "<br/>");
        document.write("获取系统屏幕的工作区域宽度:" + screen.availWidth + "<br/>");
        document.write("获取屏幕的垂直分辨率:" + screen.height + "<br/>");
        document.write("获取屏幕的水平分辨率:" + screen.width + "<br/>");
    </script>

    <body>

    </body>

</html>

DOM(Document Object Model) 文档对象模型
    
    一个html页面被浏览器加载的时候,浏览器就会对整个html页面上的所有标签都会创建一个对应的
    对象进行描述,我在浏览器上看到的信息只不过就是这些html对象的属性信息而已。我们只要能找到
    对应的对象操作对象的属性,则可以改变浏览器当前显示的内容。

var allNodes = document.all;   //获取html文件中的所有标签节点 。
    for(var i = 0; i<allNodes.length ; i++){
        alert(allNodes[i].nodeName);     //标签的名字  nodeName;
    }

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function writeUrl() {
            var links = document.links; // 获取文档中含有href的属性的标签。
            for (var i = 0; i < links.length; i++) {
                links[i].href = "http://www.baidu.cn";
            }
        }
    </script>

    <body>
        <a href="#">标题1</a>
        <a href="#">标题2</a>
        <a href="#">标题3</a>
        <input type="button" onClick="writeUrl()" value="设置a标的地址" />
    </body>

</html>

Code 属性找标签

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function checkAll(allNode) {
            //找到所有的的选项
            var items = document.getElementsByName("item");
            //找到全选按钮的对象
            //var allNode = document.getElementsByName("all")[0];
            for (var i = 0; i < items.length; i++) {
                items[i].checked = allNode.checked;
            }
        }

        function getSum() {
            var items = document.getElementsByName("item");
            var sum = 0;
            for (var i = 0; i < items.length; i++) {
                if (items[i].checked) {
                    sum += parseInt(items[i].value);
                }
            }
            var spanNode = document.getElementById("sumid");
            spanNode.innerHTML = ("&nbsp;&nbsp;&nbsp;&yen;" + sum).fontcolor("green");
        }
    </script>

    <body>
        <div>商品列表</div>
        <input type="checkbox" name="item" value="3000" />笔记本电脑3000元
        <br />
        <input type="checkbox" name="item" value="1800" />笔记本电脑1800元
        <br />
        <input type="checkbox" name="item" value="300" />笔记本电脑300元
        <br />
        <input type="checkbox" name="item" value="3000" />笔记本电脑3000元
        <br />
        <input type="checkbox" name="item" value="3000" />笔记本电脑3000元
        <br />
        <input type="checkbox" name="item" value="3000" />笔记本电脑3000元
        <br />
        <input type="checkbox" name="all" onclick="checkAll(this)" /> 全选
        <br />
        <input type="button" value="总金额:" onclick="getSum()" /><span id="sumid"></span>
    </body>

</html>

通过关系(父子关系、兄弟关系)找标签。
        parentNode    获取当前元素的父节点。
        childNodes    获取当前元素的所有下一级子元素。
        firstChild    获取当前节点的第一个子节点。
        lastChild    获取当前节点的最后一个子节点。
------------------------------------------------------------    
        nextSibling        获取当前节点的下一个节点。(兄节点)
        previousSibling    获取当前节点的上一个节点。(弟节点)
        
我们可以通过标签的类型进行判断筛选:
    
    文本节点的类型: 3
    注释的节点类型: 8
    标签节点的类型: 1

创建字节入插入节点、设置节点的属性。

document.createElement("标签名")        创建新元素节点
    elt.setAttribute("属性名", "属性值")    设置属性
    elt.appendChild(e)                        添加元素到elt中最后的位置

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        var num = 1;

        function add() {
            var inputNode = document.createElement("input"); //创建一个指定标签名字的节点。
            //setAttribute:设置节点的属性
            inputNode.setAttribute("type", "button");
            inputNode.setAttribute("value", "按钮" + num);
            num++;
            var bodyNode = document.getElementsByTagName("body")[0];
            bodyNode.appendChild(inputNode); //appendChild 添加子节点。
        }
    </script>

    <body>
        <input type="button" onclick="add()" value="添加" />
    </body>

</html>

插入目标元素的位置    
    elt.insertBefore(newNode, oldNode);            添加到elt中,child之前。
    注意: elt必须是oldNode的直接父节点。
                                   
    elt.removeChild(child)                    删除指定的子节点
    
    注意: elt必须是child的直接父节点。

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function addFile() {
                //先要创建一个tr对象
                var trNode = document.createElement("tr");
                //创建td对象
                var tdNode1 = document.createElement("td");
                var tdNode2 = document.createElement("td");
                //
                tdNode1.innerHTML = "<input type='file'/>";
                tdNode2.innerHTML = "<a href='#' onclick='delFile(this)' >删除附件</a>";
                //把td的节点添加到tr节点上
                trNode.appendChild(tdNode1);
                trNode.appendChild(tdNode2);
                ];
                var lastRow = document.getElementById("lastRow");
                tbodyNode.insertBefore(trNode, lastRow);
            }
            //删除附件

        function delFile(aNode) {
            var trNode = aNode.parentNode.parentNode;
            ];
            tbodyNode.removeChild(trNode);
        }
    </script>

    <body>
        <table>
            <tr>
                <td>
                    <input type="file" />
                </td>
                <td><a href="#" onclick="delFile(this)">删除附件</a></td>
            </tr>

            <tr id="lastRow">
                <td colspan=">
                    <input onclick="addFile()" type="button" value="添加附件" />
                </td>
            </tr>
        </table>
    </body>

</html>

城市的联动框

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        function showCity() {
            //维护一个二维数组存储省份对应的城市
            var citys = [
                [],
                ["广州", "佛山", "湛江", "中山"],
                ["长沙", "衡阳", "岳阳", "郴州"],
                ["南宁", "桂林", "贵港", "柳州"]
            ];
            //获取省份对应的节点
            var provinceNode = document.getElementById("province");
            //获取省份选中的选项
            var selectIndex = provinceNode.selectedIndex;
            //获取对应的城市
            var cityDatas = citys[selectIndex];
            //找到city节点
            var cityNode = document.getElementById("city");
            /*
            //先清空city框所有option
            var children = cityNode.childNodes;
            for(var i = 0; i<children.length ; ){
                cityNode.removeChild(children[i]);
            }
            */
            //设置options的个数。
            cityNode.options.length = 1;
            //遍历对应的所有城市然后创建对应的option添加到city上。
            for (var index = 0; index < cityDatas.length; index++) {
                var option = document.createElement("option");
                option.innerHTML = cityDatas[index];
                cityNode.appendChild(option);
            }
        }
    </script>

    <body>
        省份
        <select id="province" onchange="showCity()">
            <option>省份</option>
            <option>广东</option>
            <option>湖南</option>
            <option>广西</option>
        </select>
        城市
        <select id="city">
            <option>城市</option>
        </select>
    </body>

</html>

验证码

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
         //产生一个四位的验证码。
        function createCode() {
            var datas = ['A', 'B', '何', '敏', '凡', '江', '1', '9']; // 0-7  长度8
            var code = "";
            for (var i = 0; i < 4; i++) {
                //随机产生四个索引值
                var index = Math.floor(Math.random() * datas.length); // random 0.0-1.0(不包括1.0)
                code += datas[index];
            }
            var spanNode = document.getElementById("code");
            spanNode.innerHTML = code;
            spanNode.style.fontSize = "24px";
            spanNode.style.color = "red";
            spanNode.style.backgroundColor = "gray";
            spanNode.style.textDecoration = "line-through";
        }

        function ready() {
            createCode();
        }
    </script>

    <body onload="ready()">
        <span id="code"></span><a href="#" onclick="createCode()">看不清,换一个</a>
    </body>

</html>

正则表达式

正则表达式的创建方式:
        ""    
            
    方式1:
        /正则表达式/模式
        
    方式2:
        new RegExp("正则表达式",模式);
    
正则表达式对象常用的方法:
     test()  使用正则对象去匹配字符串  如果匹配成功返回ture,否则返回false.    
     exec()  根据正则表达式去查找字符串符合规则的内容。

模式:
    g (全文查找出现的所有 pattern)     
    i (忽略大小写)

var str = "hello123";
    var reg = /^[A-Z0-9]+$/i;
    alert("匹配吗?"+reg.test(str));

Code

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title></title>
    </head>

    <script type="text/javascript">
        var str = "da jia hao hao xue xi a";
        var reg = /\b[a-z]{3}\b/gi;
        var line = "";
        while ((line = reg.exec(str)) != null) {
            document.write(line + "<br/>")
        }
    </script>

    <body>

    </body>

</html>

4 BOM编程的更多相关文章

  1. 4、BOM编程/正则表达式

    1.    BOM编程 1.1. BOM编程基础 全称 Browser Object Model,浏览器对象模型. JavaScript是由浏览器中内置的javascript脚本解释器程序来执行jav ...

  2. javascript bom 编程

     javascript bom  编程 BOM: 浏览器对象模型 DOM Window  :窗口Window Document 属性:     status :状态栏     self:自己    ...

  3. JavaScript的BOM编程,事件-第4章

    目标 BOM编程 window和document对象 window对象的属性和方法 document对象的属性和方法 JavaScript中对象的分类 浏览器对象:window对象 window对象, ...

  4. BOM编程

    1 BOM编程 1.1 入门 BOM就是浏览器对象模型编程,通过javascript引擎提供的四个浏览器对象,操作浏览器,这叫BOM编程 1.2 window对象(重点) window代表的是一个窗口 ...

  5. javascript之BOM编程Screen(屏幕)对象

    这个对象属性相对比较简单.掌握四个方法即可. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  6. Bom和Dom编程以及js中prototype的详解

    一.Bom编程: 1.事件练习: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  7. day4 DOM,BOM

    1.     BOM编程 1.1. BOM编程基础 全称 Browser Object Model,浏览器对象模型. JavaScript是由浏览器中内置的javascript脚本解释器程序来执行ja ...

  8. javascript之BOM对象总结

    BOM编程基础 全称 Browser Object Model,浏览器对象模型. JavaScript是由浏览器中内置的javascript脚本解释器程序来执行javascript脚本语言的. 为了便 ...

  9. Java开发基础

    天数 课程 01 Java基础回顾 集合 泛型 IO流 多线程 Junit Properties   HTML   JavaScript   JavaScript   BOM编程   XML基础   ...

随机推荐

  1. /proc/sysrq-trigger的功能 介绍

    介绍/proc/sysrq-trigger的强大功能 让大家了解一下,在linux里,可以利用/proc/sysrq-trigger做些事情 # 立即重新启动计算机echo "b" ...

  2. C#委托之泛型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  3. 20150625_Andriod_02_ListView2_多条目显示_选中

    android listview 参考地址: http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html  http://xy ...

  4. 周赛-Colored Sticks 分类: 比赛 2015-08-02 09:33 7人阅读 评论(0) 收藏

    Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 32423 Accepted: 8556 Desc ...

  5. PowerShell调用jira rest api实现jira统计自动化

    通过调用JIRA Rest web api实现统计自动化,首先进行登录模拟: $content = @{username='用户名';password='密码'} $JSON=$content|con ...

  6. Objective-C协议与非正式协议

    http://blog.csdn.net/siemenliu/article/details/7836499

  7. #define用法集锦

    Definition: The #define Directive You can use the #define directive to give a meaningful name to a c ...

  8. HDU 5670 Machine

    Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  9. 关于mysql varchar 类型的最大长度限制

    Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This ...

  10. Python3基础 逻辑与 and

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...