zoukankan      html  css  js  c++  java
  • Bom和Dom编程以及js中prototype的详解

    一.Bom编程:

    1.事件练习:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    
    <script>
            function getCurrentTime(){
            var date = new Date();
            var timeInfo = date.getFullYear()+""+(date.getMonth()+1)+""+date.getDate()+""+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
            //alert(timeInfo);
            var spanobj = document.getElementById("time");
            spanobj.innerHTML = timeInfo.fontcolor("red");
            
            }
            function showTime(){
                getCurrentTime();
                //window.setInterval("getCurrentTime()",1000);
            }
            function hideTime(){
                var spanobj = document.getElementById("time");
                spanobj.innerHTML = "";
            }
            
            function clickTest(){
                alert("单击");
            }
            function dblclick(){
                alert("双击");
            }
            function showInfo(){
                var usename=document.getElementById("username");
                usename.innerHTML="请输入账号".fontcolor("red");
            }
            function hideInfo(){
                var usename=document.getElementById("username");
                usename.innerHTML="";
            }
            //onchange
            
            function showURL(){
                alert(location.href);
            }
            function download(){
                location.href="http://handsomecui.top";
            }
            function refresh(){
                location.reload();
            }
            //setInterval("refresh()",1000);
            
            document.write("获取系统屏幕的工作区域高度:"+screen.availHeight+"<br/>");
            document.write("获取系统屏幕的工作区域宽度:"+screen.availWidth+"<br/>");
            document.write("获取屏幕的垂直分辨率:"+screen.height+"<br/>");
            document.write("获取屏幕的水平分辨率:"+screen.width+"<br/>");
        
    </script>
    
    </head>
    
    
    
    <body onload="showTime()">
        <span onmousemove="showTime()" onmouseout="hideTime()">显示当前系统时间。。。</span><span id="time"></span>
        <input type="button" onclick="clickTest()" ondblclick="dblclick()"  value="点击" />
        <br/>
        username:<input type="text" onfocus="showInfo()" onblur="hideInfo()" /><span id="username"></span>
        
        <input type="button" onclick="showURL()" value="显示地址栏" />
        <span onclick="download()">下载电影</span>
        
    </body>
    
    
    </html>

    2.循环打开窗口以及浏览器的大小位置设置练习:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>BOM练习</title>
    <script>
        function showAd(){
            window.open("http://baidu.com","_blank","height=400px,width=400px,toobar=no,location=no,top=200px");
        }
        function small(){
            window.resizeTo(300,200);
        }
        var id = setInterval("showAd()", 2000);
        function clearTask(){
            clearInterval(id);
        }
        //setTimeout
    </script>
    </head>
    
    <body>
    
        <input type="Button" onclick="showAd()" value="下载电影"/>
        <input type="Button" onclick="small()" value="变小">
        <input type="Button" onclick="clearTask()", value="取消任务"/>
    </body>
    </html>

    二. Dom编程:

    1.几种找dom树节点方法的简单练习:

    getElementById();

    getElementsByName();

    getElementsByTagName();

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    
    <script>
        function showText(){
            var input=document.getElementById("inputtest");
            input.value="设置好了";
        }
        function showImg(){
            var images = document.getElementsByTagName("img");
            for(var i=0;i<images.length;i++){
                images[i].src="../data/1.jpg";
                images[i].width=200;
                images[i].height=200;
            }
        }
        function showdiv(){
            var mydivs=document.getElementsByName("mydiv");
            //alert(mydivs.length);
            for(var i=0;i<mydivs.length;i++){
                mydivs[i].innerHTML="哈哈哈哈".fontcolor("red");    
            }
            
        }
    
    </script>
    
    </head>
    
    <body>
        <input type="text" value="请输入内容" id="inputtest" />
        <input type="button" value="显示内容" id="button" onclick="showText()" />
        <img src=""/>
        <img src=""/>
        <img src=""/>
        <input type="button" value="显示图像"  onclick="showImg()" />
        <div name="mydiv"></div>
        <div name="mydiv"></div>
        <div name="mydiv"></div>
        <input type="button" value="显示div"  onclick="showdiv()" />
        
    </body>
    </html>

    2.通过复选框求商品价格的小练习:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>求商品价格</title>
    
    <script>
        function allSelect(ap){
            var p=document.getElementsByName("product");
            for(var i = 0; i < p.length; i++){
                if(ap.checked == 1)
                    p[i].checked = 1;
                else
                    p[i].checked = 0;
            }
        }
        function count(bt){
            var p=document.getElementsByName("product");
            var sum=0;
            for(var i = 0; i < p.length;i++){
                if(p[i].checked)
                    sum += parseInt(p[i].value);
            }
            bt.value="总金额为";
            var money=document.getElementsByTagName("span")[0];
            money.innerHTML=("&nbsp;&nbsp;&nbsp;&yen;"+sum).fontcolor("green");
        }
        
    </script>
    
    </head>
        
    <body>
        商品列表:<br/>
        <input type="checkBox" name="product" value="2800" id="product1"/>笔记本电脑2800元<br/>
        <input type="checkBox" name="product" value="2600" id="product2"/>笔记本电脑2600元<br/>
        <input type="checkBox" name="product" value="3800" id="product3"/>笔记本电脑3800元<br/>
        <input type="checkBox" name="product" value="3600" id="product4"/>笔记本电脑3600元<br/>
        <input type="checkBox" name="product" value="2700" id="product5"/>笔记本电脑2700元<br/>
        <input type="checkBox" name="product" value="2900" id="product6"/>笔记本电脑2900元<br/>
        <input type="checkBox" name="product" value="3700" id="product7"/>笔记本电脑3700元<br/>
        <input type="checkBox" name="product" value="3900" id="product8"/>笔记本电脑3900元<br/>
        <input type="checkBox" id="allproduct" onclick="allSelect(this)" />全选<br/>
        
        <input type="button" onclick="count(this)" value="总金额:" />
        <span></span>
        
    </body>
    </html>

    3.通过关系找标签,创建添加删除标签的练习以及实现在表格中添加删除多个文件,实现一个日期选择的联动框:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>通过关系找标签</title>
    
    <script>
        /*
            通过关系(父子关系、兄弟关系)找标签。
            parentNode    获取当前元素的父节点。
            childNodes    获取当前元素的所有下一级子元素。
            firstChild    获取当前节点的第一个子节点。
            lastChild    获取当前节点的最后一个子节点。
    ------------------------------------------------------------    
            nextSibling        获取当前节点的下一个节点。(兄节点)
            previousSibling    获取当前节点的上一个节点。(弟节点)
            
            我们可以通过标签的类型进行判断筛选:
            文本节点的类型: 3
            注释的节点类型: 8
            标签节点的类型: 1
            
            
            创建字节入插入节点、设置节点的属性。
            
            document.createElement("标签名")        创建新元素节点
            elt.setAttribute("属性名", "属性值")    设置属性
            elt.appendChild(e)                        添加元素到elt中最后的位置
            elt.insertBefore(newNode,oldNode);
    
        */
        
        function isRun(y){
            if(y%400==0 || (y%4==0&&y%100!=0))
                return 1;
            else
                return 0;
        }
        
        function start(){
            var s="";
            var bodyNode = document.getElementsByTagName("body")[0];
        
            s = s + "body的父节点:" + bodyNode.parentNode.nodeName + "<br/>";
            
            var showText = document.getElementsByTagName("span")[0];
    
            var children = bodyNode.childNodes;
            s = s + "body子节点是:" + "<br/>";
            for(var i = 0; i < children.length; i++){
                s = s + children[i].nodeName + "   对象类型是: " + children[i].nodeType +"<br/>";
            }
            s = s + "span的下一个兄弟节点是:" + showText.nextSibling.nodeName + "<br/>";
            s = s + "span的上一个兄弟节点是:" + showText.previousSibling.nodeName + "<br/>";
            
            showText.innerHTML = s.fontcolor("red");
            
            var m=[0,31,28,31,30,31,30,31,31,30,31,30,31];
            var selectNodeYear = document.getElementsByTagName("select")[0];
            var selectNodeMonth = document.getElementsByTagName("select")[1];
            var selectNodeDay = document.getElementsByTagName("select")[2];
            
            
            var curDate = new Date();
            //alert(curDate.getYear());
            
            //初始化年
            for(var i=1900; i<=curDate.getFullYear(); i++){
                var newOption = document.createElement("option");
                newOption.innerHTML = i;
                if(i == curDate.getFullYear()){
                    newOption.setAttribute("selected","selected");
                }
                selectNodeYear.appendChild(newOption);
            }
            
            //初始化月
            for(var i=1; i<=12; i++){
                var newOption = document.createElement("option");
                newOption.innerHTML = i;
                if(i == curDate.getMonth()+1){
                    newOption.setAttribute("selected","selected");
                }
                selectNodeMonth.appendChild(newOption);
            }
            
            //初始化日
            if(isRun(curDate.getFullYear()))
                m[2] = 29;
            else
                m[2] = 28;
            //alert(m[2]);
            //alert(curDate.getDay());注意getDay是获取星期几的;
            for(var i = 1; i <= m[curDate.getMonth()+1]; i++){
                var newOption = document.createElement("option");
                newOption.innerHTML = i;
                if(i == curDate.getDate()){
                    
                    newOption.setAttribute("selected","selected");
                }
                selectNodeDay.appendChild(newOption);
            }
            
        }
        var num=1;
        function add(){
            var inputNode = document.createElement("input");
            inputNode.setAttribute("type", "button");
            inputNode.setAttribute("value", "新按钮"+(num++));
            var bodyNode = document.getElementsByTagName("body")[0];
            bodyNode.appendChild(inputNode);
        }
        function addfile(inputNode){
            var tbodyNode=document.getElementsByTagName("tbody")[0];
            var newtr = document.createElement("tr");
            var newtd1 = document.createElement("td");
            var newtd2 = document.createElement("td");
            newtd1.innerHTML = "<input type='file'/>";
            newtd2.innerHTML = "<a href='#' onclick='deletefile(this)'>删除附件</a>";
            newtr.appendChild(newtd1);
            newtr.appendChild(newtd2);
            //tableNode.appendChild(newtr);
            //alert(inputNode.parentNode.nodeName);
            tbodyNode.insertBefore(newtr,inputNode.parentNode.parentNode);//注意必须是tr的直接父节点,所以是tbody
        }
        
        function deletefile(deleteNode){
            var tbodyNode=document.getElementsByTagName("tbody")[0];
            tbodyNode.removeChild(deleteNode.parentNode.parentNode);
        }
        //月改变对应修改日的范围
        function addDay(){
            
            var m=[0,31,28,31,30,31,30,31,31,30,31,30,31];
            var selectNodeYear = document.getElementsByTagName("select")[0];
            var selectNodeMonth = document.getElementsByTagName("select")[1];
            var selectNodeDay = document.getElementsByTagName("select")[2];
            
            
            selectNodeDay.length = 0;
            /*
                if(selectNodeMonth[i].getAttribute("selected") == "selected"){
                    alert(i);
                }
                这样只会找到默认显示的位置假设今天是10月那么只会找到9
                可以直接用selectedIndex属性来得到选中的月份
            */
            if(isRun(selectNodeYear.selectedIndex + 1900))
                m[2] = 29;
            else
                m[2] = 28;
            //alert(m[2]);
            //alert(curDate.getDay());注意getDay是获取星期几的;
            for(var i = 1; i <= m[selectNodeMonth.selectedIndex + 1]; i++){
                var newOption = document.createElement("option");
                newOption.innerHTML = i;
                selectNodeDay.appendChild(newOption);
            }
            
        }
        
    </script>
    
    </head>
    
    <body onload="start()">
        <!-- gasfa -->
        <span></span>
        <input type="button" onclick="add()" value="点我" />
        <table>
        <tr>
        <td><input type="file"/></td> <td><a href="#" onclick="deletefile(this)">删除附件</a></td>
        </tr>
        <tr>
        <td><input type="button" value="添加附件" onclick="addfile(this)"/></td>
        </tr>
        </table><select onchange="addDay()"></select><select onchange="addDay()"></select><select></select>
    </body>
    </html>

     4.通过css的操作,实现一个验证码;以及正则表达式判定一个表单

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head>
    
    <script>
    
    /*
    
        正则表达式的创建方式:
                ""    
                    
            方式1:
                /正则表达式/模式
                
            方式2:
                new RegExp("正则表达式",模式);
            
        正则表达式对象常用的方法:
             test()  使用正则对象去匹配字符串  如果匹配成功返回ture,否则返回false.    
             exec()  根据正则表达式去查找字符串符合规则的内容。
        
        模式:
            g (全文查找出现的所有 pattern)     
            i (忽略大小写)
            
    */
        function createCode(){
            var d = ['1', '2', '', '', 'A', 'B'];
            var str="";
            for(var i = 0; i < 4; i++){
                //alert(Math.random()*6);
                str += d[Math.floor(Math.random()*d.length)];
            }
            var spanNode = document.getElementById("code");
            spanNode.innerHTML = str;
            spanNode.style.fontSize = '16pt';
            spanNode.style.fontStyle = 'italic';
            spanNode.style.backgroundColor = 'gray';
            spanNode.style.textDecoration = 'line-through';
            spanNode.style.color = 'green';
        }
        function searchStr(){
            var strNode = document.getElementsByTagName("input")[0];
            var str = strNode.value;
            var reg = /^[A-Z0-9]+$/i;
            var spanNode = document.getElementById("test");
            spanNode.innerHTML = '匹配吗?' + reg.test(str) + '<br/>';
            reg = /[a-z]{3}/gi;
            var line="";
            spanNode.innerHTML = '';
            while((line=reg.exec(str)) != null){
                spanNode.innerHTML = spanNode.innerHTML + line + '<br/>';
            }
        }
        
        function checkName(){
            var inputNode = document.getElementById("userName");
            var spanNode = document.getElementById("userId");
            var content = inputNode.value;
            var reg = /^[a-z][a-z0-9]{5}$/i;
            if(reg.test(content)){
                spanNode.innerHTML = "正确".fontcolor("green");
                return true;
            }
            else{
                spanNode.innerHTML = "错误".fontcolor("red");
                return false;
            }
        }
        
        function checkPass(){
            
        }
        
        function ensurepass(){
            var pwd1Node = document.getElementById("pwd");
            var pwd2Node = document.getElementById("ensurepwd");
            var pwd1 = pwd1Node.value, pwd2 = pwd2Node.value;
            var spanNode = document.getElementById("ensure");
            if(pwd1 == pwd2){
                spanNode.innerHTML = "正确".fontcolor("green");
                return true;
            }
            else{
                spanNode.innerHTML = "错误".fontcolor("red");
                return false;
            }
            
        }
        
        function checkEmail(){
            var email = document.getElementById("email").value;
            var spanNode = document.getElementById("emailspan");
            
            var reg = /^[a-z0-9]w+@[a-z0-9]+(.[a-z]{2,3}){1,2}$/i;
            if(reg.test(email)){
                spanNode.innerHTML = "正确".fontcolor("green");
                return true;
            }
            else{
                spanNode.innerHTML = "错误".fontcolor("red");
                return false;
            }
        }
        
        function checkAll(){
            var userName = checkName();    
            var email = checkEmail();
            var ensure = ensurepass();
            if(userName&&email&&ensure){
                return true;
            }else{
            
                return false;
            }
        }
        
    </script>
    
    
    
    <body>
        <span id="code"></span><a href="#" onclick="createCode()">看不清,换一个</a>
        <br/>
        <input type="text" /><input type="button" value='查询' onclick='searchStr()'/>
        <br/>
        <span id='test'></span>
        <form action="success.html" method="get" onsubmit="return checkAll()" > <!--如果表单提交时候触发的方法返回是false,那么该表单不允许提交,如果返回的是true允许提交 -->
                <table border="1px" width="50%" align="center" cellspacing="0px" cellpadding="3px">
                    <tr>
                        <td width="25%">姓名:</td>
                        <td>
                            <input type="text" name="userName" id="userName" onblur="checkName()"/>
                            <span id="userId"></span>
                        </td>
                    </tr>
                    <tr>
                        <td >密码:</td><td>
                            <input type="password"  name="pwd" id="pwd" onblur="checkPass()"/>
                            <span id="passId"></span>
                        </td>
                    </tr>
                    <tr>
                        <td>确认密码:</td><td>
                    <input type="password" name="ensurepwd" id="ensurepwd" onblur="ensurepass()" />                        <span id="ensure"></span>
                        </td>
                    </tr>
                    <tr>
                        <td>邮箱</td><td>
                            <input type="text" name="email" id="email" onblur="checkEmail()"/>
                            <span id="emailspan"></span>
                            
                        </td>
                    </tr>
                    <tr>
                        <td>性别</td><td>
                            <input type="radio" checked="ture" name="gender" id="male" value="male"/><input type="radio" name="gender" value="female"/></td>
                    </tr>
                    <tr>
                        <td>爱好:</td><td>
                            <input type="checkbox"  name="like" />
                        eat
                            <input type="checkbox" name="like" />
                        sleep
                            <input type="checkbox" name="like"/>
                        play  
                        <span id="hobbySpan"></span>
                        </td>
                    </tr>
                    <tr>
                        <td>城市</td><td>
                        <select name="city" id="city">
                            <option value=""> 请选择</option>
                            <option value="bj"> 北京 </option>
                            <option value="gz"> 广州 </option>
                            <option value="sh"> 上海 </option>
                        </select>
                        
                        </td>
                    </tr>
                    <tr>
                        <td>自我介绍</td><td>                    <textarea cols="15" rows="5"  name="myInfo" id="myInfo"></textarea></td>
                    </tr>
                    <tr align="center">
                        <td colspan="2"><!--提交按钮-->
                        <input type="submit"/>
                        </td>
                    </tr>
                </table>
            </form>
    </body>
    
    
    </html>

    三. prototype:

    1.js中的简单练习以及完成查询对应月份的日期、通过prorotype完成字符串翻转,显示系统时间:

    <html>
        <head>
            <meta charset="gb2312"/>
            <title>JavaScript Exercise</title>
            <script>
                function add(a, b){
                    with(document){
                        write("a + b = " + (a+b) + "<br/>");
                        for(var index in arguments){
                            write("" + index + "个元素是:" + arguments[index] + "<br/>");
                        }
                    }
                }
                add(1, 2);
                
                function showday(){
                    var m=[0,31,28,31,30,31,30,31,31,30,31,30,31];
                    var inputobj = document.getElementById("month");
                    alert(inputobj.value + "月的天数是:" + m[parseInt(inputobj.value)]);//这里不要parseint也可以,会自动转
                }
            </script>
        </head>
        <body>
        <script>
            var arr=new Array(17,25,10,18,1,110);
            arr.reverse();
            arr.sort(cmp);
            arr = arr.join(",");
            for(var i=0; i <arr.length; i++){
                document.write(arr[i]);
            }
            
            function cmp(num1,num2){
                return num1-num2;
            }
        </script>
        
        
        <script>
            function Person(id, name){
                this.id = id;
                this.name = name;
                this.say = function(){
                    alert(name + "呵呵");
                }
            }
            var p = new Person(110,"张三");
            p.say();
            
            var tool = new ArrayTool();
            function ArrayTool(){
                this.Max = function(arr){
                    var max = arr[0];
                    for(var i = 1; i < arr.length; i++){
                        if(arr[i] > max){
                            max = arr[i];
                        }
                    }
                    return max;
                }
                this.searchEle = function(arr, Ele){
                    for(var i = 0; i < arr.length; i++){
                        if(arr[i] == Ele)
                            return i;
                    }
                    return -1;
                }
            }
            
            Max = function(){
                var max = this[0];
                for(var i = 1; i < this.length; i++){
                    if(this[i] > max){
                        max = this[i];
                    }
                }
                return max;
            }
            
            
            //prototype
            Array.prototype.getMax = Max;
            Array.prototype.getindex = function(Ele){
                for(var i = 0; i < this.length; i++){
                    if(this[i] == Ele)
                        return i;
                }
                return -1;
            }
            
            
            var arr = [25,12,110,26,21];
            document.write("最大值是:" + tool.Max(arr) + "     26的索引是:" + tool.searchEle(arr,26) + "<br/>");
            document.write("哈哈最大值: " + arr.getMax() + "  哈哈12的索引是:" + arr.getindex(12) + "<br/>");
        </script>
        
        
            月份:<input id="month" type="text" /><input type="button" value="查询" onClick="showday()"/>
            <br/>
            当前系统时间:<span id="time"></span>
            <script src="reverse.js" type="text/javascript"></script>
        </body>
        <script>
            function getCurrentTime(){
            var date = new Date();
            var timeInfo = date.getFullYear()+""+(date.getMonth()+1)+""+date.getDate()+""+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
            
            var spanobj = document.getElementById("time");
            spanobj.innerHTML = timeInfo.fontcolor("red");
            
            }
            getCurrentTime();
            window.setInterval("getCurrentTime()",1000);
        </script>
    </html>

    reverse.js:

        String.prototype.tocharArray = function(){
            var arr = new Array();
            for(var i = 0; i < this.length; i++){
                arr[i] = this.charAt(i);
            }
            return arr;
        }
        var str = "你们好屌啊";
        var arr = str.tocharArray();
        document.write("<br/>转化成字符数组后:" + arr.join(","));
        /*
        for(i in arr){
            document.write(arr[i]);    
        }
        */
        String.prototype.reverse = function(){
            var arr = this.tocharArray();
            arr.reverse();
            return arr.join("");
        }
        arr = str.reverse();
        document.write("<br/> 翻转后:" + arr);
        
        

     欢迎访问handsomecui的blog地址:

    http://www.cnblogs.com/handsomecui/

    网站:handsomecui.top

  • 相关阅读:
    次小生成树模板(poj1679)
    ISAP模板
    ZOJ3781
    Uva12663
    LightOJ1089
    网络流DINIC模板
    FZU2030(括号匹配)
    NOIP2011提高组(选择客栈)
    DRF之视图家族
    DRF多表设计与ModelSerializer组件
  • 原文地址:https://www.cnblogs.com/handsomecui/p/6013159.html
Copyright © 2011-2022 走看看