zoukankan      html  css  js  c++  java
  • javascript的实现事件的一些实例

                   嘿嘿,今天学习到了事件,其实在C#中事件只需要我们触发即可实现,但是在javascript并不是这样的,在这里,事件是javascript与html的交互,就是文档或者浏览器窗口发生的一件特定的交互瞬间。其实从定义上面你很难想象吧,那么下面就简单的举例说下。

             一.实现文字改变位置

    <head>
        <title></title>
        <script>
            function getDomText() { //该方法适用于让“链接”和“文字”交换位置显示在提示在提示框中
                var pnode = document.getElementsByTagName("p");   //获取p元素,让他的子节点交换位置
                var str = "";
                str = document.getElementById("myspan").innerHTML; //获取id为myspan的元素的文本
                str += document.getElementById("myid").innerHTML;  //获取id为myid的元素的文本
                alert(str);
            }
        </script>
    </head>
    <body>
        <p>
        <a id="myid" href="#">链接</a>&nbsp;&nbsp;&nbsp;
        <span id="myspan">文字</span><br />
        <input type="button" name="name" value="按钮" onclick="getDomText()" />
       </p>
    </body>

                          

                     上面的button就实现了onclick单击事件,然后通过事件调用了一个方法使其文本信息改变位置。

              二.替换文本信息

    <script>
            function replaceTextContent(){    //该方法适用于替换文本信息
                var pnode = document.getElementById("myDom");
                pnode.innerHTML = '<span>一句话</span>&nbsp;<a href="">一个链接</a>';//改变id为myDom的元素的文本信息
            }
        </script>
    <body>
        <p>
            <input type="button"  value="替换内容 " onclick=" replaceTextContent()" />
        </p>
        <p id="myDom">
            <a href="#">一个链接</a> &nbsp;<span>一句话</span>
        </p>
    </body>

                                         

                      其实在这里是替换文本信息,不局限于是原来的文本信息交换位置,可以是任意内容的,嘿嘿。

                       三..改变图片大小

    <script>
            function updateImgAttribute() {
                var imgmsg = document.getElementById("myimg"); //获取图片的元素
                imgmsg.width = "500";             //图片存在属性width和height,然后设置即可
                imgmsg.height = "500";
            }
     </script>
    <body>
        <p>
            <input type="button" name="btn" value="修改属性" onclick="updateImgAttribute()" />
        </p>
        <img src="4.jpg" id="myimg" alt="加载中!" height="200" width="200"/>
    </body>

                                     

                     改变图片大小其实是通过元素的属性设置即可,或者通过获取其元素,在使用setAttribute也可以实现的,这样是最简单的。

             四.显示另一个元素的值

    <script>
            function getOthBtnValue(btn) {         //接收一个元素节点
                var pnode =btn.parentNode;         //把传进来的这个元素作为p的子节点
                for (var i = 0; i < pnode.childNodes.length; i++) {
                    if (pnode.childNodes[i] != btn && pnode.childNodes[i].nodeType == btn.nodeType) {
                        alert(pnode.childNodes[i].value); //if中的条件:当子节点满足不是btn而且子节点的类型和btn一样
                    }                                   
                }
            }
        </script>
    <body>
        <p>
            <input type="button" name="btn1" value="显示btn2的值 " onclick="getOthBtnValue(this)"/>  <!--this在这里是指当前元素-->
            <input type="button" name="btn1" value="显示btn1的值 " onclick="getOthBtnValue(this)"/>
        </p>
    </body>

                     在这里写if'语句中的条件时间可能不太容易理解,但是我们可以寻找下pnode.childNodes的节点的个数即可知道我们的条件为什么要这样写,子节点的个数输出的是5,包括空白的文本节点等,所以在显示时间需要注意的。

                      五.克隆图片

    <script>
            function cloneImg() {
                var imgmsg = document.getElementById("myimg");
                var newimg = imgmsg.cloneNode(true);  //在cloneNode中需要一个bool类型的参数,true表示强度
                document.getElementById("myid").appendChild(newimg); //获取p元素,然后再p元素中添加新克隆出来的元素
            }
        </script>
    <body>
        <p id="myid">
            <input type="button" name="btn" value="克隆图片" onclick="cloneImg()"/>
            <br />
            <img src="4.jpg" id="myimg" alt="加载中" height="200" width="200"/>
        </p>
    </body>

                              

                       其实克隆图片,从名字上面的方法的名字cloneNode就知道了实现的功能,可以点击按钮克隆多张图片。

                       六.隐藏图片

    <script>
            function showOrHide() {         
                var myimg = document.getElementById("myimg");
                var displaymsg = myimg.style.display;     //display是用来显示或者隐藏
                //alert(displaymsg);
                if (displaymsg != 'none') {               //当参数为none是为显示
                    myimg.style.display = 'none';
                }
                else {
                    myimg.style.display = '';              //当为空时间为隐藏
                }
            }
        </script>
    <body>
        <p id="myid">
            <input type="button" name="btn" value="隐藏图片" onclick="showOrHide()"/>
            <br />
            <img src="4.jpg" id="myimg" alt="加载中" height="200" width="200"/>
        </p>
    </body>

                    之前没有介绍display的使用方法,它应该是style的属性,在这里需要注意的是它的参数,仅仅存在none和空。

             七.文本信息排序

    <script>
            function changeSeriation() {
                var ulnode = document.getElementsByTagName("ul")[0];//获取页面的ul元素, 在这里[0]是代表第一个ul
                if (ulnode.hasChildNodes) {        //判断是否包含子节点
                    var length = ulnode.childNodes.length;      //获取子节点的长度
                    var str = [];
                    for (var i = 0; i < length; i++) {
                        str[i] = ulnode.childNodes[0];        //每次获取的子节点元素放在最前面
                        ulnode.removeChild(ulnode.childNodes[0]);  //清除当前的子节点元素,按照上面的顺序依次输出
                    }
                    for (var i = length-1; i >=0; i--) {
                        ulnode.appendChild(str[i]);            //这个是相反的,每次输出的排在最后一个
                    } 
                }
            }
        </script>
    <body>
        <ul>
           <li  >item1</li>
           <li  >item2</li>
           <li  >item3</li>
           <li  >item4</li>
           <li  >item5</li>
       </ul>
    <input type="button" name="btn" value="交换顺序 " onclick="changeSeriation()"/>
    </body>

                        在这里理解起来可能刚接触不太容易理解,但是我感觉之前学习了pop方法和push方法,其实这个就是那个理解起来相似,但是最后的显示的信息还是打不同的,仅限于理解上面,

               八.form表单

    <script>
            window.onload = function () {
                document.getElementById("btn").onclick = function (e) { // 在这使用一个匿名的方法实现单击事件
                    //function getAllValue(e) {
                    var formmsg = document.forms[0];      //获取第一个form元素
                    var formelements = formmsg.elements;   //获取form表单中的元素
                    //alert(formelements.length);
                    //var str = "";
                    var count = 0;
                    for (var i = 0; i < formelements.length; i++) {
                        //str[i] = formelements[i].name = "text";
                        //alert(formelements[i].value);              //获取所有元素的value
    
                        //alert(formelements[i].name);                 //获取所有元素的name
    
                        if (formelements[i].getAttribute("type") == "text") {      //获取tpre的值为text的元素的数量
                            count++;
                        }
                    }
                    alert(count);
                }
            }
         </script>
    <body>
         <form action="/" method="post">
            文本框:<input type="text" name="mytext" value="文本框 " /><br />
            单选框:<input type="radio" name="myradio" value="单选框1" /><input type="radio" name="myradio" value="单选框2" /><br />
            下拉列表:
           <select name="myselect">
            <option value="下拉列表" >==请选择==
            </option>
               <option value="下拉列表1">第一项</option>
               <option value="下拉列表2">第二项</option>
           </select>
            <br />
            <input type="button" name="name" id="btn" value="得到所有控件的value"  />
        </form>
    </body>

                      在这里需要注意的获取form表单中的元素的value的使用和name的使用,实现单击事件可以写在html的外边,可以添加onload事件,可以使用上面的方法即可,嘿嘿。

              九.通过一个按钮触发事件获取另一个按钮触发事件

    <script>
            function changeValue() {
                var mybtnmsg = document.getElementById("btnid").click();  //元素存在一个单击事件
            }
        </script>
    <body>
        <p>
            <input type="button"  value="触发按钮的事件 " onclick="changeValue()" />
            <input type="button" id="btnid"  value="按钮提示 " onclick="alert('我被触发了')" />
        </p>
    </body>

                         十.创建新元素

     <script>
            function createNewElement() {
                document.getElementById("p1").innerHTML = "<span>我是新添加进来的文本1</span>"; //直接通过innerHTML添加文本元素
    
                var newspanelement = document.createNewElement("span");         //也可通过创建元素添加新的文本,这里创建的是span标签
                newspanelement.appendChild(document.createTextNode("我是新添加进来的文本2"));//添加文本
                var pnode = document.getElementById("p2");       //添加id为p2的p标签的的子节点span
                pnode.appendChild(newspanelement);               //把span的所有元素添加到p标签中
            }
        </script>
    <body>
        <p>
        <input type="button" name="name" value="创建新元素 " onclick="createNewElement()" /></p>
        <p id="p1"></p>
        <p id="p2"></p>
    </body>

                           十一.通过页面加载事件打开一个网页

     <script>
            //Window.onload() =function(){    //页面加载事件
            //    document.body.onclick = function () {  //元素可以实现onclick事件
            //        alert(this.innerHTML)
            //    }
            //}
    
            window.navigate("http://www.baidu.com");//当发生页面加载事件时间跳转到链接地址
            window.location.href = "http://www.rupeng.com";//同上
        </script>
    <body>
        <body style="background-color:red">
        <p id="p">第一个DOM</p>
    </body>

                        十二.onfocus与onblur的使用

    <script>
            window.onload = function () {
                document.getElementById("txtname").onfocus = function () {     //给文本框设置一默认值,当鼠标进入时间显示空白
                    this.value = '';
                };
                document.getElementById("txtname").onblur = function () {      //当鼠标离开时间仍然显示默认值
                    this.value = '用户名';
                }
            }
        </script>
    <body>
        <form action="/" method="post">
            <table>
                <tr><td>UserName</td><td>
                    <input type="text" id="txtname" name="txtname" value="用户名 " /></td></tr>
                <tr>
                    <td>UserPwd</td>
                    <td>
                        <input type="password" name="txtpwd" value="密码" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="button" name="name" value="登录 " /></td>
                    <td>
                        <input type="reset" name="name" value="充值 " /></td>
                </tr>
            </table>
        </form>
    </body>

                       学习了这些实例,其实要自己直接写估计还是挺为难的,感觉还是不能自己写下来吧,不过我会更多的练习的,每次在学习做实例的时间都是非常兴奋,可以把前面学习的所有的很乱的知识使用上啦,感觉它终于有用啦,原来是实现这个功能的,就写到这里啦,发现过啦昨天好久啦,要睡觉啦,嘿嘿。

    我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
  • 相关阅读:
    Spring IoC 容器和 AOP
    MySQL 锁与事务控制
    MySQL 存储引擎的选择
    如何理解MySQL 索引最左前缀原则
    MySQL 索引
    Java 线程池
    Java多线程 ReentrantLock、Condition 实现生产者、消费者协作模式
    Java多线程并发中 CAS 的使用与理解
    Java多线程中协作机制
    Mysql-SQL生命周期-show profile
  • 原文地址:https://www.cnblogs.com/dyxd/p/4214445.html
Copyright © 2011-2022 走看看