zoukankan      html  css  js  c++  java
  • Javascript Dom Jquery 笔记汇总持续更新中

    Javascript 笔记汇总

    零散知识点

    1)    Js执行顺序从上到下执行的,所以有时将javascript写到body后面(一般是写到head标签中)

    2)      Javascript中既可以使用双引号也可以使用单引号声明字符串,主要是为了方便和html继承,避免转义符的麻烦

    3)    事件<body>标签中写 <a href=javascript:alert(‘hello,这也是事件,注意是分号’)

          <a href=”http://www.baidu.comonclick=alert(hello world !)></a>

     

    4)       javascript中不像C#中那样要求所有路径都有返回值

    5)      分割: name.join(“|”); //默认是逗号

     <a href="javascript:window.history.back()">上一页,后退,返回</a><br/>

         <a href="javascript:window.history.go(-1)">上一页,后退,返回</a><br/>

         <a href="javascript:window.history.forward()">下一页,前进</a><br />

         <a href="javascript:window.history.go(1)">下一页,前进</a><br />

     

    6)      打印本页   <a href="#" onclick="if (window.print) window.print();return true">打印本页</a>

    7)    设为首页:  <a onclick="this.style.behavior='url(#default#homepage)';

                       this.sethomepage('http://baidu.com');"href="#">设为首页</a>

    8)       js脚本内写个简单的方法

    Function  方法名(){

               alert(“这是弹出一个提示框”);

                       confirm("这是弹出一个选择对话框");  //这个是有返回值的(true/false)

                       prompt("请输入一个值", "aa");  //不管输入什么值,都返回字符串类型

                       document.write("写入网页中"+"<br/>");

    }

    9)       innerHTML 标签中的HTML代码,outerHTML,包含标签对的HTML 代码

        innerTEXT 标签内的文本,outerTEXT包含标签对的标签文本

     

    10)    Var 是万能数据类型

    11)    

        //        var num = 123.7;

        //        alert(num.toFixed(2));  //代表小数点后占 2 个位数

     //       document.write(num.toPrecision(8));    //设置整数部分和小数部分总共占

    12)控件的隐藏与显示: onload 事件要在body标签里面写

    document.getElementById("btn_showOrvisible").style.display = "none";

    document.getElementById("btn_showOrvisible").style.display = "inline";

     

    document.getElementById("btn_showOrvisible").style.visibility = "hidden";

    document.getElementById("btn_showOrvisible").style.visibility = "visible";

       以上两种要配套对应使用

     

    13)   失去焦点: onblur()

    14)   设置js字体字号,字体大小

    <h1  onclick="this.style.fontSize='16px';" >点击设置字体大小(字号)</h1>

    15)通过方法设置字体的大小颜色的改变,记得 fontSize S要大写

            kj.style.color="red";

            kj.style.fontSize = "24px";

    16)<!--onload 直接在javascript根部写代码直接在javascript写代码从上到下依次执行,而在onload中写是先将html代码执行完再执行onload事件-->

    17)event.srcElement;   //这个是获取事件在哪个控件上执行,返回一个控件(实体)

    18)   js前台调用后台方法 (但是有个问题,前台调用后台时,已启动程序就自动执行了调用的方法了)

     "<%methodName(); %>"  //js 调用无返回值后台方法

     var bl = "<% methodName() %>";  //js调用有返回值的后台方法

     

    19)  form1.submit(); 提交表单

    20)    

     

     

     

     

                               

     

     

     

     

    Js变量

    Javascript中既可以使用双引号也可以使用单引号声明字符串,主要是为了方便和html继承,避免转义符的麻烦

     

    Javascriptnull,undefined两种,null表示变量值为空,undefined则表示变量还没有指向任何的对象,不占空间.未初始化

     

    Javascript是弱类型,声明变量的时候无法int I =0;只能通过var i=0;声明变量,C#中得var不一样,不是C#总那样的类型推断

     

    Javascript中也可以不用var 声明变量,直接用,直接用这样的变量是全局变量因此除非却是想用全局变量,否则使用的时候最好加上var,就是说var是万能类型

     

             Js是动态类型的,因此var i=0;i=”abc”;是合法的

    Js排错与调试

            如果js中有错误的代码,浏览器会弹出报错信息,查看报错信息就能帮助排查错误

            注意: internet的调试选项要打开,internet选项高级,去除禁用脚本调试前的勾选

                以调试方式运行网页

                设置断点,监视变量等操作和C#一样

     

            判断变量初始化(判断是否为空)

            Var x;

            If(x==null) alert(“null”);

            If(typeof(x)==”undefined”)   alert(“undefined”;

            If(!x)  {alert(‘x’);}  //推荐用这种方法

            If(x){}  //变量被初始化了或者变量不为空或者变量不为0

     

    匿名函数

     var f1= function(i1,i2) {  return (i1+i2 );  }

     alert( f1( 5, 6) );

    面相对象初步(当成类用)

             Javascript没有类的语法,是用函数闭包(closure)模拟出来的,下面讲解的时候,还是用C#中的类,构造函数的概念,javascriptstring,data等类不被叫做对象

             不严谨,javascript中声明类(类不是类,是对象)

     

             Function Person(name,age){    //声明一个函数,当成类用

             this.Name =name;

             this.Age=age;

             this.SayHello=function(){ alert( this.Name+this.Age );  }

           }

             下面的person可以用object代替

             Var p1 = new Person( “ tom ” ,30 );  //不要忘了new 否则就变成调用函数了

             this.gender =””;   //动态增加属性

             P1.SayHello();

    Array,dictionary对象数组

             Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组,ArrayList, Hashtable等得超强综合体

     

             Var name = new Array();

             name[0]=”tom”;

             name[1]=”ctom”;

             name[2]=”btom”;

             name[3]=”atom”;

             for(var i=0;i<name.length;i++){ alert( name[i] );  }

     

             Js中的dictionary

             Js中的array是一个宝贝,不仅是一个数组,还是一个Dictionary,还是一个Stack

     

             var pinyins = new Array();

             pinyins[“ren”]=””;

             pinyins[“kou”]=””;

             pinyins[“shou”]=””;

     

             alert(pinyins[“ren”];  ); //或者

             alert(pinyins.ren;  );

     

             for(var k in pinyins){   //遍历 js中得foreach语法 ,这里的forforeach的变形

                   alert(k );      //在有索引值的数组中,foreach遍历出来的是数组的key

             }

       Array的简化声明

            var arr = [3,4,5,6,7];   //普通数组的初始化

            //这种数组可以看做是pinyins[“ren”]=””; 特别,也就是key 0,1,2….

     

            字典风格的简化创建方式

            Var arr = {“tom”:20,”jim”:23};  //注意是冒号

     

          emp = new Array(3);  //3代表数组最小占三位元素的地儿

         emp[0]=123;

         emp[1] = "123";

         emp[2] = true;

         emp[3]="这个已经超出数组界限了,但它可以自动扩容";

         //document.write(emp.join("--"));    //间隔符,默认为逗号

         document.write(emp);

     

          emp = new Array(3);  //3代表数组最小占三位元素的地儿

          emp["zhao"] = 123;

          emp["wang"] = "123";

          emp["liu"] = true;

          emp["li"] = "这个已经超出数组界限了,但它可以自动扩容";

          document.write(emp["zhao"]);    //这时就不能用间隔符了

          document.write(emp[0]);         //这时是不能用索引,会打印出undefined

     

            var arrData = { //定义一个数组保存相关数据

                    厂商1: { 品牌1_1: "型号1_1_1,型号1_1_2", 品牌1_2: "型号1_2_1,型号1_2_2" },

                    厂商2: { 品牌2_1: "型号2_1_1,型号2_1_2", 品牌2_2: "型号2_2_1,型号2_2_2" },

                    厂商3: { 品牌3_1: "型号3_1_1,型号3_1_2", 品牌3_2: "型号3_2_1,型号3_2_2" }

                };

     

     

    数组,for 及其它

            对于数组风格的array来说,可以使用join方法拼接为字符串

            for循环还可以获得一个对象所有的成员

            for(var e in document){

            alert(e);

            }

            //多个方法共用一个对象名

            var date1 = new Date();

            with (date1) {

                document.write("获取一个全的年份    " + getFullYear() + "");

                document.write((parseInt(getMonth()) + "");

                document.write(getDate() + "");

                document.write("星期" + getDay());

     

            }

     

    数据类型

     获取并输出变量的数据类: document.write(typeof(num)+"<br/>"); 

     数据类型转换:  document.write(parseInt(mes)+"<br/>");

                                document.write(typeof (bo) + "转化为" + parseInt(bo)+”或者”+bo.tostring()); 

             不能将bool型转化为整型

     

        在这里 string型直接乘以整型结果为整型

        123+" " 结果为字符串类型  即整形加个字符型结果为字符型

    对字符的操作

    分割: name.join(“|”); //默认是逗号

          var arr = str.split(",");

        截取: alert(str.substring(1, 4));   //从第 1 位截取到第几(4)

              alert(str.substr(1, 4));      //从第 1 位截取几(4)

    查找:检索  alert(str.indexOf("d", 4));  //从索引 4 开始查找 d

       大小写转换: str.toLowerCase();  转换为小写   str.toUpperCase();  转换为大写

       获取单个字符 : Str.charAt(10); 

      

    日期(年月日)时间

    日期:  alert(new Date().toLocaleDateString());

    时间:  alert(new Date().toLocaleTimeString());

    年份:  date.getFullYear();

    月份:  parseInt(date.getMonth())

      :  date.getDate();

    星期:  date.getDay();

     

    //        //根据索引获取

    //        var date1 = new Date();

    //        var arr = new Array( "1", "2", "3", "4", "5", "6", "7", "8",

                                "9", "10", "11", "12");

    //        document.write(arr[date1.getMonth()]);

    自动把获取的参数放到一个集合里

     

    //        function sum() {

    //            var s=0;

    //这里的 arguments叫参数的集合,接受参数,并放到数组中,这就没有必要加参数

    //            for (var i = 0; i < arguments.length; i++)     //                s = s + arguments[i];

    //            alert(s);

    //         }

    //       sum(1,2,3,5,6,7);  //调用

    List, Combox,select 组合框,下拉框, 下拉列表

    //通过设置selectsize属性 size=”1”大于1的是listbox,小于1的是combox,默认是combox

            <select id="Select1" name="D1" size="" >  

                 <option id="op1" value="zhao1">zhao</option>

                 <option id="Option1" value="wang1">wang</option>

                 <option id="Option2" value="liu1">liu</option>

            </select>

    单选框,单选按钮 ,checkbox复选框

    单选按钮 通过设置相同的名字可以分组 ,就可以设置只选择一个了

    <input id="Radio1" name="sex" type="radio" value="man" />

    <input id="Radio2" name="sex" type="radio" value="woman"/>

    复选框也是通过名字,但是可以实现多选

    <input id="Checkbox1" name="ch" type="checkbox" value="f足球" />足球<br />

    <input id="Checkbox2" name="ch" type="checkbox" value="s游泳" />游泳<br />

    <input id="Checkbox3" name="ch" type="checkbox" value="b篮球" />篮球<br />

    <input id="Checkbox4" name="ch" type="checkbox" value="t象棋" />象棋<br />

    正则表达式

    function checkText() {

                //  var reg = /d\d\d\-d\d\d/;

                //  \d 一个数字  \d{2} 重复两次\d       ^开始$结束

                //  \w 表示 a-z  A-Z  0-9 中一个字母或数字

                //  \d 表示一个数字相当于[0-9]

                // var reg = /^0\d{2}-\d{2}$/

                //var reg = /\bac[0-9a-zA-Z]{5}ac\b/;

                //var reg = /\bac[0-9a-zA-Z]?ac\b/;

                //   \b  \b  是指之间是一个字符串

                //var reg = /\b\w{2}[(-]?\b/    //  [)-]? 意思是)- 只能选一个

               // var reg = /^\($/;   // ( 也是关键字,显示时需要转义一下,  \(

                // var reg = /\b\w\b/          //?是指出现一次或者0

               //  * 代表多次出现

                //var reg = /\b\b/;

                // var reg = /^[0-9a-zA-Z]\w*@\w*.com$/;

                //var reg = /^\d{5}-\d{4}$|^\d{5}$/;

                // var reg = /^\d{5}(-\d{4})?$/;    //等价于上面那行

                //var reg = /^(\d{1,3}\.){3}\d{1,3}$/;  //ip地址  \d{1,3} 是数字可以出现 1 次到 3

                //var reg = /^[3-6][0-4]$/;

                //var reg = /^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$/;  //完整的ip正则表达式

                //var reg= /^(\d)(\d)\1\2$/     //分组匹配  \1 匹配第一个分组,即第一个括号里面的数字,后面同理

                //var reg = /^(\d)\1(\d)\2$/gi;   //g是全局匹配    i是忽略大小写

               

                var str = form1.Text1.value;

                if (reg.test(str)) { alert("正确"); }

                else { alert("错误"); }

            }

    添加事件的方式

     

    <!—第一种方式-->

           <script type="text/javascript" for="kjID" event="onmousemove">alert("这也是添加事件的   一种方式")</script>

    <!—第二种方式-->

           <script type="text/javascript">

                document.getElementById("kjID").onclick = function () {

                     alert("这是添加js事件的第二种方式方式");

                }

        </script>

    <!—第三种方式-->

           <script type="text/javascript">

                document.getElementById("kjID").onclick = new Function("alert('添加事件的第三种方式,               记得这个的Functionf要大写');");

        </script>

    <!—第四种方式-->

           <script type="text/javascript">

                function takeit() { alert("这是通过方法名称来调用事件"); }

                       document.getElementById("kjID").onclick = function () { takeit(); }   //这里直接                          写方法名就可以了

           </script>

    判断浏览器标准(W3C , IE)

        <script type="text/javascript">

            function show1() { alert("经判断,此浏览器是W3C标准,即火狐"); }

            function show2() { alert("经判断,此浏览器是IE标准");}

            function click_event() {

                //window.addEventListener==true

                //alert(window.addEventListener);

                if (window.addEventListener) {

                     document.getElementById("error").addEventListener("click", show1);  //这种方法适用于火狐浏览器 W3C 

                }

                else {

                    document.getElementById("error").attachEvent("onclick", show2);  //这种方法只适用于IE标准,而且是一个累加事件

                    //还需要加一个单例模式

                }

            }

        </script>

     

    判断鼠标在页面,鼠标在屏幕中的位置

            function showMousePosition() {         

                //根据页面取值(即获取鼠标在页面上的位置)

                    document.getElementById("Text1").value = event.clientX;

                    document.getElementById("Text2").value= event.clientY;

                //根据屏幕取值(即获取鼠标在屏幕上的位置)  event.screenX可用event.x代替,y同理

                   document.getElementById("Text3").value= event.screenX;  

                   document.getElementById("Text4").value= event.screenY;

                //alert(event.type);  //记录这个事件是由哪个方法激发的

            }

    获取鼠标当前所在位置,鼠标位置,鼠标当前位置

      $("kjid").mousemove(function (e) {

                           alert("鼠标当前位置: 横坐标: "+e.pageX+" 纵坐标: "+e.pageY);

                           //function后没写e,,上行的eevent.clientXevent.clientY代替即可

          });

     

     

     

     

    获取鼠标按键

            function getMouseBtn() {         

                //event.srcElement 是返回一个控件(实体)

                alert(event.srcElement.id);

                event.button = 0;  // 0代表左键  1代表中键  2代表右键

                if (event.button == 2) {

                    alert("禁止右击");   //配合使用 onmousedown()方法

                    return false;  //默认return turn  ,所以只写return false时就行了

                }

            }

    获取键盘按键

    (不同浏览器获取按键的方法不同)

    <script type="text/javascript">

        alert("此浏览器的标准是: "+navigator.appName);

        document.onkeydown = key;  //获取按键的事件

        //document.onkeydown=otherKey(this)

        function key() {

            if (navigator.appName == "Microsoft Internet Explorer") {

                alert("您按下的键是: " + String.fromCharCode(event.keyCode)+" 此键的编码号是: "+event.keyCode); 

            }

            else if (navigator.appName == "Netscape") {

                var KeyCode = new Number(e.which);

                document.getElementById("Text1").value += unescape("%" + keyCode.toString(16));

                alert(keycode);

            }

        }

        function otherKey(e) {

            //            event.shiftKey;    event.ctrlKey;  event.altKey;

            if (navigator.appName == "Netscape") {

                alert(e.altKey);

            }

            else if (navigator.appName == "Microsoft Internet Explorer") {

                if (event.ctrlKey) {

                    alert("你按下了ctrl");

                    return false;

                }

            }

        }

        </script>

    打开/弹出新窗口,关闭窗口,关闭当前窗口,往页面中写值

    <script type="text/javascript">

         var newwin;

         function btn_click() {

             // toolbar = yes 工具栏

             // menubar =yes 菜单栏

             // location=yes 地址栏

             // status = yes 状态栏

             // scrollbars = yes 滚动条

             // resizable = yes 可改变大小

             newwin = window.open("jqueryTest2.htm", "baidu", "height=300px,width=300px,toolbar=yes,scrollbars=yes,status=yes,resizable=yes");

                       newwin = window.showModalDialog("getData.aspx", "这是要传递的值" , "dialogHeight:300px;dialogWidth:300px");  //(这是要打开一个小窗口)变量newwin是接受子页面回传值的

     

         }

         function closeWindows() {

             debugger;

             //window.close();  //关闭当前窗口

             if (window.newwin) { newwin.close(); } //关闭新窗口

             else { alert("没有打开的窗口"); }

         }

         function write() {

             //write 可以往页面上写值,针对空白页面的

             newwin.document.write("hello");

         }

        </script>

    1页面传值,父窗体和子窗体相互传值

    父窗体中:

        <script type="text/javascript">

            var zichuang;

            function openziweb() {

                zichuang = window.open("js_YeMianChuanZhi_ziWeb.aspx", "这里随便",                                                                    "width=300,height=300");  //获取子窗体

            }

            function sendOrGetData() {

                //  window.opener.document.getElementById("") 指父页面中的容器控件

                form1.Text1.value = zichuang.document.getElementById("ziText1").value;

            }

    </script>

    //------------------------------------------------------------//

    <body onload="openziweb()">

        <form id="form1" runat="server">

        <div>

        <a href="js_YeMianChuanZhi_ziWeb.aspx" target="_blank">先打开子页面</a>

        <a href="js_YeMianChuanZhi_ziWeb.aspx" target="_blank">dd</a>

            <input id="Text1" type="text"/>

            <input id="Button1" type="button" value="获取子窗口中的text" onclick="sendOrGetData()" /><br/>

            <label>子窗体传回的值是:</label>

            <input id="textFromziWeb" type="text" />

           

        </div>

        </form>

    </body>

    子窗体中:

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

        <script type="text/javascript">

       

            function sendTofuWeb() {

                window.opener.document.getElementById("textFromziWeb") ;是父窗体

                var thisText = document.getElementById("ziText1").value;

                window.opener.document.getElementById("textFromziWeb").value = thisText;

            }

        </script>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            <input id="ziText1" type="text" value="aa"/>

            <input id="Button1" type="button" value="text的值传给父窗体" onclick="sendTofuWeb()" />

        </div>

        </form>

    </body>

    </html>

    2页面传值,父窗体和子窗体相互传值

    先运行页面1:

        <script type="text/javascript">

            var obj = new Object();

            obj.name = "zhao";

            obj.sex = "nan";

            function btn_sendData() {

                var str = window.showModalDialog("getData.aspx", obj, "dialogHeight:300px;dialogWidth:300px");  //变量str是接受子页面window.returnValue回传值的

                alert(str);

            }

        </script>

     

    再运行页面2:

        <script type="text/javascript">

            //获取传回来的值

            function getData() {

                var obj = window.dialogArguments;

                alert(obj.name);

            }

            function btn_returnData() {

                  //此方法只适用于打开的小窗口回传值

                window.returnValue = "这是子页面回传回来的值(只有关闭子页面时,才能看到回传回来的值)";

            }

        </script>

     

     

     

    获取DIV或其他标签中的其他元素的类型event.srcElement.type

    例子: 图片的选择

    <script type="text/javascript">

             function move() {

             var val = event.srcElement;

             if (event.srcElement.type == "link") {

                 var id = val.id;

                 document.getElementById("myImage").src = "image/image" + val.id + ".jpg";

             }

             // alert(event.srcElement.id);

         }

        </script>

    流执行顺序

    <form id="form1" runat="server" onclick="myclick('form')">

        <div onclick="myclick('div')">

            <table onclick="myclick('table')">

                <tr onclick="myclick('tr')">

                    <td onclick="myclick('td')">

                        <b onclick="myclick('b')">点击我-标签从内到外展示</b>

                    </td>

                </tr>

            </table>

        </div>

         <span id="myspan"></span>

        <div onclick="myclick('dd')"><h3>这里的onclick="myclick('dd')"不会显示因为与 "点击我" 没有关系,因为那只在子标签和父标签里有用</h3> </div>

       </form>

     

    获取地址栏的信息,通信协议端口号,页面路径,主机名,参数等信息刷新页面,状态栏

            document.write("本页面地址栏的内容: " + window.location.href+"<br/>");

            document.write("本机的通信协议: " + window.location.protocol + "<br/>");

            document.write("本机的主机名: " + window.location.host + "<br/>");

            document.write("本页面的端口号: " + window.location.port + "<br/>");

            document.write("本页面在主机中的路径地址: " + location.pathname + "<br/>");

            document.write("从别的页面传过来的url参数: " + location.search + "<br/>");  //参数(页面间传的参数)[参数?name=123&pwd=345]

            js刷新页面    location.reload();

              Js页面跳转:  location.replace("http://www.baidu.com");  //页面的跳转

              Js改变状态栏信息:  window.status = "改变的状态栏";  //作用时间短,尽量在方法下使用

                                          window.defaultStatus = "默认状态栏";    //作用时间长

     

    递归调用

    (方法自己调用自己就叫递归调用)

    例子: 计时器

        <script type="text/javascript">

            function showDateTime() {

                var date = new Date();

                //innerHTML 是一个属性  label不是一个控件,是一个标签

                document.getElementById("dt").innerHTML = "    " + date.toLocaleDateString() + date.toLocaleTimeString() + "星期" + date.getDay();

                timer = setTimeout("showDateTime()", 1000);  //递归调用,setTimeout()意思是每隔多长时间(毫秒)调用一次指定的方法

            }

            //timerval = setInterval("showDateTime()", 1000);   //每隔多长时间(毫秒)调用多次指定的方法

            function btn_stop() {

                //clearTimeout(timer);  //取消超时

                clearInterval(timerval);  //取消超时

            }

    </script>

     

    页面缓存cookie

    <script type="text/javascript">

        document.cookie = "name=wjq";

        document.cookie = "pwd=123";

     

        alert("查看cookie"+document.cookie);  //默认的生命周期是一天

        var date = new Date();

        date.setYear(date.getFullYear() + 2);

        document.cookie = "pwd=123;expris=" + date;  //这样就能保存两年

     

        var arr = document.cookie.split(";");

        var obj = new Array();

        for (var i = 0; i < arr.length; i++) {

            var dd = arr[i].split("=");

            obj[dd[0]] = dd[1];

     

        } alert(obj["name"] + " " + obj["pwd"]);

     

        </script>

    table表格的操作(插入/删除行,插入/删除单元格,插入值)

            //遍历表格内的内容

            function show() {

                var tableMenu = document.getElementById("tableid");

                for (var i = 0; i < tableMenu.rows.length; i++) {

                    for (var j = 0; j < tableMenu.rows[i].cells.length; j++) {

                                 //获取表格中的值用innerHTML

                        alert(tableMenu.rows[i].cells[j].innerHTML);  

                    }

                }

            }

     

            //插入行,括号里面是索引值

            function addRow() {

                var tableMenu = document.getElementById("tableid");

                //rowNum是在第几行前面插入行

                var rowNum = document.getElementById("rowNumValueID").value-1;

                if (rowNum <= tableMenu.rows.length) {

                    tableMenu.insertRow(rowNum);   //插入表格行

                }

                else { alert("该行不存在"); }

            }

            //删除行,括号里面是索引值

            function removeRow() {

                var tableMenu = document.getElementById("tableid");

                //rowNum是行索引

                var rowNum = parseInt(document.getElementById("rowNumValueID").value) - 1;

                if (rowNum <= tableMenu.rows.length) {

                    tableMenu.deleteRow(rowNum);    //删除表格行,括号里面是索引值

                }

                else { alert("该行不存在"); }

            }

     

              //添加单元格

            function addCell() {

                var tableMenu = document.getElementById("tableid");

                var rowNum = parseInt(document.getElementById("rowNumValueID").value);

                var mes = document.getElementById("contentOfInsertID").value;  //插入的值

                if (rowNum <= tableMenu.rows.length) {

                    var row = tableMenu.rows[rowNum - 1];

                    row.insertCell();    //括号里写值的话,值代表从第几列插入,默认每次是从最后插入

                    row.cells[row.cells.length - 1].innerHTML = mes;   //给添加的单元格赋值

                }

                else { alert("该行不存在"); }

            }

            //删除单元格

            function delCell() {

                var table = document.getElementById("tableid");

                var rowNum = parseInt(document.getElementById("rowid").value);

                var lieNum = parseInt(document.getElementById("lieid").value);

             if (rowNum <= table.rows.length && lieNum <= table.rows[rowNum-1].cells.length){

                    table.rows[rowNum - 1].deleteCell(lieNum-1);

                }

            }

     

    菜单特效(动态加载, 静态加载)

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title></title>

        <script type="text/javascript">

            //声明一个二维数组

            myArray = new Array(new Array(3), new Array(3));

            myArray[0][0] = "打开10";

            myArray[0][1] = "打开11";

            myArray[0][2] = "打开12";

     

            myArray[1][0] = "打开20";

            myArray[1][1] = "打开21";

            myArray[1][2] = "打开22";

     

            function hiddenList() {

                document.getElementById("menu1_list").style.visibility = "hidden";

                document.getElementById("menu2_list").style.visibility = "hidden"

     

                for (var i = 0; i < myArray.length; i++) {

                    var menuList = document.getElementById("menu" + (i + 3) + "_list");

                    for (var j = 0; j < myArray[i].length; j++) {

     

                        var newnode = document.createElement("a");  //创建一个a标签对

                        var newnodeText = document.createTextNode(myArray[i][j]); //创建一个内容节点

                        newnode.appendChild(newnodeText); //将内容添加到a标签内,组成了 <a>newnodeText的内容</a>

                        newnode.appendChild(document.createElement('br')); //添加换行标签

                        menuList.appendChild(newnode);  //将新生成的完整a标签添加到menuList(div)

                    }

                }

            }

            function show(menuid) {

                document.getElementById(menuid.id + "_list").style.visibility = "visible";

                event.srcElement;   //这个是获取事件在哪个控件上执行

            }

            function unShow(menuid) {

                document.getElementById(menuid.id + "_list").style.visibility = "hidden";

            }

        </script>

    </head>

    <body onload="hiddenList()">

        <form id="form1" runat="server">

        <div id="menu1" onmousemove="show(this)" onmouseout="unShow(this)" style=" position:absolute; top:10px; left:10px; width:100px">文件</div>

            <div id="menu1_list" style=" position:absolute; top:30px; left:10px; width:100px">

                <a>新建</a><br/>

                <a>打开</a><br/>

                <a>保存</a><br/>

                <a>关闭</a><br/>

        </div>

        <div id="menu2"  onmousemove="show(this)" onmouseout="unShow(this)"  style=" position:absolute; top:10px; left:50px; width:100px">编辑</div>

            <div id="menu2_list" style=" position:absolute; top:30px; left:50px; width:100px">

                <a>撤销</a><br/>

                <a>剪切</a><br/>

                <a>复制</a><br/>

                <a>粘贴</a><br/>

        </div>

     

        <div id="menu3"  onmousemove="show(this)" onmouseout="unShow(this)"  style=" position:absolute; top:10px; left:90px; width:100px">帮助</div>

            <div id="menu3_list" style=" position:absolute; top:30px; left:90px; width:100px; visibility:hidden">

     

        </div>

     

        <div id="menu4"  onmousemove="show(this)" onmouseout="unShow(this)"  style="position:absolute; top:10px; left:130px; width:100px">1帮助</div>

            <div id="menu4_list" style=" position:absolute; top:30px; left:130px; width:100px;  visibility:hidden">

     

        </div>

     

        </form>

    </body>

    </html>

     

     

    DOM 笔记汇总

     

    动态添加节点一般过程

     

        <script type="text/javascript">

     

            function btn_addNewNode() {

     

                //获取根节点

     

                var rootNode = document.getElementById("rootID");

     

                //1.创建新节点( p 节点, p标签对: <p></p>)

     

                var newNode = document.createElement('p');

     

                //2.创建节点内容,纯文本( "这是节点内容" )

     

                var textNode = document.createTextNode("这是节点内容");

     

                //3.将节点内容添加到新节点p ( 这时新节点为:  <p>这是新节点内容</p> )

     

                newNode.appendChild(textNode);

     

                //4.将新节点添加到根节点前

     

                rootNode.parentNode.insertBefore(newNode, rootNode); //node之后添加标签

     

            }

     

        </script>

     

     

     

    零散知识点

     

    1)     nodeType 返回值 1 代表标签对  2代表控件 3 代表文本值

     

    2)     第一个子节点: var child = ar.firstChild;

     

            最后一个子节点:var child = ar.lastChild; //最后一个子节点

     

    下一个节点 : var child = ar.firstChild.nextSibling; //第一个子结点之后一个兄弟节点

     

    上一个节点: //var child = ar.lastChild.previousSibling;//最后一个结点之前一个兄弟节点

     

     

     

    3)       判断当前节点是否有子节点:  if (ar.hasChildNodes) {}

     

    4)       遍历节点(遍历当前节点的所有子节点)

     

                 var childs = ar.childNodes;

     

                    for (var i = 0; i < childs.length; i++) {

     

                        alert(childs[i].nodeName + "\n" + childs[i].nodeType + "\n" +                                                               childs[i].nodeValue);

     

                    }

     

    5)       判断当前节点有没有父节点: if (ar.parentNode) {}

     

    6)       节点名称: nodeName   节点值: nodeValue   节点类型:nodeType

     

    7)       获取所有节点 :document.all  //返回所有的标签

     

    8)       元素/标签/节点的类型获取标签,获取节点:

     

    document.getElementsByTagName("input")  //返回所有input

     

     

     

     

     

    例子:<label id="lb" class="aa" onclick="setA()"><p>this is a test too</p></label>

     

    9)          innerHTML 标签中的HTML代码, 即上例中的: <p>this is a test too</p>

     

             outerHTML,包含标签对的HTML 代码即上例中的: 全部

     

        innerTEXT 标签内的文本即上例中的this is a test too

     

         outerTEXT包含标签对的标签文本

     

               平常写为: html 即可

     

    10)    

     

    dom技术对节点,元素控件的操作

     

    1)       创建节点:  var newNode = document.createElement('p'); (括号里是标签类型,例如: a ,div,font)

     

    2)       删除节点: 

     

    删除子节点:      rootNode.removeChild(rootNode.firstChild); ( 括号里是要删除的子节点)

     

    3)       添加节点: (节点之前添加节点) : ar.parentNode.insertBefore(createnode, ar); //将该节点添加到指定结点之前(添加子节点)

     

    4)       替换子节点: Node.replaceChild(新节点,老结点); //一般只替换标签内的内容而不替换整个标签

     

                                                                                  替换节点:

     

    5)     追加节点:  newnode.appendChild(newnodeText);

     

    6)     为匹配的元素添加一个或者多个元素 : $("#addID").add("<span>添加的元素</span>");

     

    7)     深度复制:  var current = ar.cloneNode(true); 或者  = ar.firstChild.cloneNode(true);

     

                    document.getElementsByName  //返回同name的一个数组

     

    8)    Dom设置元素属性,控件属性:

     

    document.getElementById("lb").setAttribute("className", "bb"); lb.className = "bb";

     

     

     

    selectkj.setAttribute("color", selectcolor.options[selectcolor.selectedIndex].text); //设置颜色

     

     

     

    selectkj.setAttribute("size", selectsize.options[selectsize.selectedIndex].text);//设置字体大小,字号

     

     

     

    Jquery 笔记汇总

     

    零散知识点

     

    1)    基本格式:

     

    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

     

    <script type="text/javascript">

     

                  $(document).ready(function () {  这里面写function方法或程序段 })

     

                  //上一行代码亦可用下一行代替

     

                  $(function () {   这里面写function方法或程序段  })

     

    </script>

     

    2)    jquery事件的链式写法

     

        $(function(){

     

            $(".divTitle").click(function(){

     

                $(this).addClass("divCurrColor").next(".divContent").css("display","block");

     

            });

     

        });

     

    3)    window.onload = function () { alert(“初始化加载时执行”)  }

     

    4)    获取匹配元素在当前视口的相对偏移: kj.offset().left 或者 kj.offset().top  即获取当前对象的topleft 顶点坐标

     

    5)       获取控件:   $(选择器)     jquery选择器

     

    6)     $("#outDiv,span")IDoutDiv 所有span元素操纵

     

    $("#outDiv span")IDoutDiv 所有span元素操作

     

    $("*")对所有元素,全部元素操作

     

        $("#isID,.isClass,span")  IDisID,类名为isClass,全部span元素操作

     

    $("#fistDiv + #secondDiv")  idfistDiv节点和idsecondDiv的元素操作

     

    $("#fistDiv + div")当前节点后的一个div标签节点

     

    $("#fistDiv ~ div")  当前节点到某个范围之间的节点

     

    $("li:first")   集合中的第一个元素

     

    $("li:last")   集合中的最后一个元素

     

        $("li:not(#li1)")   $("li:not(li:first+li)")  集合中除了某一个元素

     

        $("li:even")   集合中的奇数(even代表奇数)

     

    $("li:odd")    集合中的偶数(odd代表偶数)

     

    $("li:eq(2)")   等于索引为2li

     

    $("li:gt(2)")   大于索引为2li

     

    $("li:lt(3)")    小于索引为3li

     

    $(":header")  凡是<h1></h1><h2></h2>这种标签对,都可以用:header来寻扎

     

    $("div:contains('1')")   包含某些文本(包含文本为1div元素)

     

    $("div:empty")   为空的元素,空元素

     

    $("div:has(span)")   包含span标签的div

     

    $("div:parent")    div的父节点

     

    $("div:hidden")  隐藏的div元素    $("div:visible") 显示的div元素

     

    $("li:[id]")   查找含有id的属性元素

     

    $("li:[id='Li1']")   查找id是特定值的属性元素

     

    $("li:[id!='Li1']")   查找id不是某些值的属性元素

     

    $("li:[id^='L']")    查找id以某些值开头的属性元素

     

    $("li:[id$='5']")    查找id以某些值结束的属性元素

     

    $("li:[id*='i']")    查找id包含某些值的属性元素

     

    $("div:only-child")  div父元素下只有一个子元素时….

     

     

     

    //遍历表格中除全选以外的所有复选框

     

        $("input[type=checkbox]:not('chb_selectAll')").each(function (index)

     

           var dataobj = eval("(" + data + ")"); //转换为json对象

     

     

     

     

     

    $("li:[id][id*='4']")  查找含有id属性并且id包含4的属性元素

     

    $("#fu div:nth-child(2)") div下的第2个节点操作(如果把2改为oddeven ,则对奇数列或偶数列操作)

     

    $("div div:first-child")  div下的第一个子节点变色

     

        $("div:last-child")  div下的最后一个子节点操作

     

        $("div:only-child")   div父元素下只有一个子元素时变色          

     

        $("#CheckBox1:checked")  对选中的复选框操作

     

    $("#CheckBox1:not(:checked)") 对未选中的复选框操作

     

    var objW = $(window);       //当前窗口

     

     

     

             var objW = $(window);       //jquery获取当前窗口

     

         var brsW = objW.width();    //当前窗口的宽度

     

         var brsH = objW.height();   //当前窗口的高度

     

         var sclL = objW.scrollLeft();  //当前窗口滚动条的位置( )

     

         var sclT = objW.scrollTop();   //当前窗口滚动条的位置( )

     

     

     

    //隔行变色

     

      $("table tr:nth-child(even)").css("background-color", "#eee");

     

    //table表格中每行的checkbox复选框全选

     

      $("table tr td input[type=checkbox]").attr("checked", true);

     

    //反选

     

      $("chb_ReselectAll").click(function () {

     

         $("table tr td input[type=checkbox]").attr("checked", function () {

     

           return !$("this").attr("checked");

     

         })

     

      })

     

     

     

     

     

     

     

     

     

    Jquery对元素,控件的操作

     

     

     

    对样式的操作:

     

    更改背景色:    $("#outDiv,span").css("background-color", "red");

     

           $("#id").attr("属性名称");   //通过id获取控件的某个属性

     

           $("#id").attr({ style:"color:green" , title:"给属性赋值"});  //一次性给控件设置多个属性

     

          $("#id"). addClass("className")    //为当前节点添加样式

     

          $("#id").addClass("className1 className2");  //同时给一个元素添加多个样式

     

          $("#id"). removeClass ("csName3")    //删除固定样式, 括号中如果为空则删除所有样式     $("#id").toggleClass("csName3"); //替换样式, 如果有csName3这个样式,就删除,否则增加一个该名称的css样式

     

     

     

    一些方法事件, 对标签元素的操作

     

           $("#id").next() ;    //获取当前节点的下一个兄弟节点

     

           $("#id").nextAll() ;    //获取当前节点后的所有兄弟节点

     

           $("#id").change(function(){ alert(“文本更改时弹出”);  })    //文本发生更改时执行

     

           $("#id").val().join("#")   对于数组风格的array来说,可以使用join方法拼接为字符串,间隔符

     

           $("#id").click(function () {}     点击事件,单击事件

     

           //get()方法将一组元素转换成其他数组(不论是否是元素数组)

     

         $("p").append($("input").map(function () {return $(this).val(); }).get().join(", "));

     

           //将一组元素转换成为数组集合

     

             var arr = jQuery.makeArray(document.getElementsByName("smImg"));

     

           $("#id").empty();  //清空id控件中的值

     

     

     

             //要区分何时用val ,何时用text, 何时用html

     

           var mes = $(this).val();  获取当前节点的值( 即控件的value属性)

     

           var mes = $(this).html();  //取值 ( html不仅会找文本还会将原标签的格式找到, 文本+标签 )

     

           $(this).html(mes+"456");   //html标签对内赋值

     

           var mes = $(this).text();    //取值( text只会找到元标签的文本内容)

     

           $(this).text(mes + "456");   //赋值(纯文本)

     

     

     

           var div = $("<" sxm + "='" + sxz + "'>" + nrw + "</" + ysm + ">"); //创建dom对象

     

           $("#id").append($("<span title='aaa'>元素创建,添加一个创建的元素</span>"));

     

           $("#id").appendTo($("#oldDivID"));  //追加到,添加到元素

     

           $("#id").after("<div>移动控件,将本标签添加到id控件之后</div>").clone(true);

     

           $("#id").before("<div>移动控件,将本标签添加到id控件之前</div>");

     

           $("#id").insertAfter($("#Text1"));  //id控件插入text1控件之后

     

           $("#id").insertBefore($("#Text1"));  //id控件插入text1控件之后

     

              //遍历元素(遍历整个文档中相关的标签)index是当前标签索引(1)

     

         $("#div1").each(function (index) { alert(index); } 

     

     

     

           //get()方法将一组元素转换成其他数组(不论是否是元素数组)

     

         $("p").append($("input").map(function () {return $(this).val(); }).get().join(", "));

     

           //将一组元素转换成为数组集合

     

             var arr = jQuery.makeArray(document.getElementsByName("smImg"));

     

         //遍历上面的数组索引用下面的方法

     

           $.each(arr, function (index) {}

     

     

     

     

     

     

     

     

     

     

     

              

     

           //冒泡

     

          var intI = 0;

     

          $("body,div,#btnShow").click(function () {

     

          intI++;

     

          $(".clsShow").show().html("hello").append("<div>执行次数:"+intI+"</div>")

     

          };

     

     

     

             //阻止冒泡过程

     

          var intI = 0;

     

          $("div").click(function (even) {

     

              alert(++intI);

     

              even.stopPropagation();  //阻止冒泡过程(注意stopPropagation别写错)

     

           });

     

    绑定,添加,移除事件

     

    //绑定事件( 将一个方法绑定到多个事件上)( 鼠标点击鼠标mouseout都会触发)

     

      $("#kjid").bind("click mouseout", function () { alert($(this).val());} );

     

     

     

    //绑定事件(将多个方法绑定到多个事件上)( 鼠标点击鼠标mouseout都会触发)

     

      $("#kjid").bind({click: function () { alert("click事件"); },

     

                             mouseout: function () { alert("mouseout事件"); }});

     

      $("#kjid").bind( {blur : function(){ 方法体 )}, focus : function(){ 方法体 });

     

    //绑定事件,bind只能绑原有的,live可以绑定后来添加上的元素

     

      $("#1").live("click", function () {  alert(“启动后绑定”); return false; });

     

     

     

    //移除事件 (如果括号里什么也不加则移除所有事件)

     

      $("#kjid").unbind("blur");

     

    //移除事件,live绑定的事件,对应的用die去解除, bind绑定的用unbind解除

     

      $("#1").die("click");

     

     

     

    //切换事件,hover方法绑定事件(即先执行mousemove后执行mouseout)

     

      $("#kjid").hover( function () { $("#divID").show(1000); }, function () { $("#divID").hide(1000) } );

     

     

     

    //toggle()方法,在此方法中,可以依次调用N个指定的函数,直到最后一个函数,然后重复对这些函数轮番调用

     

      $("#kjid").toggle(

     

                function () { alert("执行方法1"); alert("执行方法2"); },

     

                function () { alert("执行方法3"); alert("执行方法4"); },

     

                function () { alert("执行方法5"); alert("执行方法6"); }

     

                )

     

    //事件只执行一次 one() 方法, 用于交易性的页面

     

      $("#kjid").one("click", function () { alert("one,方法只执行一次,再次单击则不再响应任何事件") });

     

    //trigger()方法绑定事件,功能:自动激发,自动触发,(括号里是事件名称,例如focus, select, )

     

      $("#txt_ID").trigger("select");  //自动选中文本框

     

    //编写文本框自定义事件,并用trigger()方法自动触发该自定义事件

     

      $("#kjid").bind("btn_click", function () { alert(“这是自定义方法”); });

     

      $("#txt_trigger").trigger("btn_click");  //自动触发自定义事件

     

    //文本框获得焦点事件$("#kjid").focus(function (){ 代码段; } );  失去焦点事件blur()

     

              

     

     

     

    查找,匹配

     

    //检查当前的元素是否含有某个特定的类,如果有,则返回 true

     

      if ($(this).hasClass("className")) { alert("true"); }

     

    //保留包含特定后代的元素,去掉那些不含有指定后代的元素。

     

      $('li').has('ul').css("background-color", "purple")

     

    //用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true             如果没有元素符合,或者表达式无效,都返回'false'

     

      $("#btnID").parent().is("Div")); (btnID的父节点是Div,是的话返回true, 否则返回false)

     

    //slice()选取一个匹配的子集(如果括号里为-1,则子集为最后一个)

     

      $("li").slice(0,2).css("background-color", "purple");

     

    //children()获取所有子节点

     

      $("div").children().css("background-color", "purple");

     

    //find是到一个子节点中查找(可以找N),搜索所有与指定表达式匹配的元素。这个函数是查找正在处理的元素的后代元素的好方法。

     

      $("div").children().find("li").css("color", "purple");

     

    //查询,查找到"#term-2" 为止

     

      $("dl dt").first().nextUntil("#term2ID").css("color", "purple");

     

      $("dl dt").first().nextUntil(选择器).css("background-color", "purple");

     

    //parents (注意parents)是查找指定元素的所有祖先元素,parent(不加sparent)只找上一级

     

      $("#term-2").parents().css("background-color", "red");

     

    //parentsUntil 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。但不包括那个选择器匹配到的元素。即不包括"#aa"

     

      $("#term-2").parentsUntil("#aa").css("background-color", "green");

     

    //查找当前元素之前所有的同辈元素,查找当前节点前面的所有兄弟节点

     

      $("dd:last").prevAll().css("background-color", "green");

     

    //查找当前元素之前所有的兄弟节点,直到遇到匹配的那个元素为止。但不包括那个选择器匹配到的元素。

     

      $("dd:last").prevUntil("#prevID").css("background-color", "green");

     

    //siblings是查找当前节点的所有兄弟节点,同级元素

     

      $("dd").siblings().css("background-color", "green");

     

     

     

    动画

     

    //元素的隐藏与显示(括号里的数字代表时间<毫秒> , 有了时间就有了动画效果)

     

    $("#kjid").hide(1000);  或者  $("#kjid").css("display","none");

     

    $("#kjid").show(1000);  或者  $("#kjid").css("display","block");

     

     

     

    //一个按钮实现显示与隐藏,<若隐藏,则执行显示; 若显示则执行隐藏>(toggle) 并加样式

     

     $("#btn_hs").click(function () {

     

         $("#lbID").toggle(1000, function () {

     

             //$(this).css({"boder":"solid 1px #ccc","padding":"2px"})

     

             $(this).css("margin", "100")

     

         })

     

     })

     

    //滑动隐藏 :  $("#imgID").slideUp("slow", function () { } );

     

    //滑动显示 :  $("#imgID").slideDown("slow", function () { } );

     

    //滑动隐藏与显示(slipDown slipUp ) 综合

     

       $("#kjid").click(function () { $("#imgID").slideToggle(1000) } );

     

     

     

    //渐进渐出,淡入淡出

     

     var isFadeShow = true;

     

     $("#kjid).click(function () {

     

         //$("#imgID").fadeTo(0.8)   //这是设置透明度

     

         if (isFadeShow) { $("#imgID").fadeOut("slow", function () { isFadeShow = false }); }

     

         else {               $("#imgID").fadeIn(3000, function () {  isFadeShow = true });  }

     

     })

     

     

     

    //简单动画animate

     

      var isleftRight = true;

     

      $("#btn_animate").click(function () {

     

         //$("#imgID2").animate({ left: "+=100px", "150px" }, "slow", function () { alert("ok") });

     

         //链式写法

     

           $("#imgID2").animate({ left: "+=200px" }, 1000).animate({ left: "+=200px" }, 1000).animate({ left: "+=200px" }, 1000).animate({ left: "+=200px" }, 1000)

     

       })

     

    //停止动画( 不可恢复,只停当前事件 )

     

     $("#btn_stop").click(function () { $("#imgID2").stop();  })

     

    //动画延时

     

     $("#btn_delay").click(function () {  $("#imgID2").delay(3000).slideToggle(1000); })

     

       

     

    获取控件位置,动态设置控件位置

     

    <script type="text/javascript">

     

            $(function () {

     

     

     

                var curY; //获取所选项的Top,坐标y

     

                var curX; //获取所选项的Top,坐标x

     

                var curH; //获取所选项的Height

     

                var curW; //获取所选项的Width

     

                var srtY; //设置提示箭头的Top

     

                var srtX; //设置提示箭头的Left

     

                var objL; //获取当前对象

     

     

     

                //设置当前位置数值,参数obj为当前对象名称( 设置箭头的位置 )

     

                function setInitValue(obj) {

     

                    curY = obj.offset().top

     

                    curX = obj.offset().left

     

                    curH = obj.height();

     

                    curW = obj.width();

     

                    srtY = curY + (curH / 2) + "px"; //设置提示箭头的Top

     

                    srtX = curW - 5 + "px"; //设置提示箭头的Left

     

                }

     

     

     

                //设置当前所选项的鼠标滑过事件

     

                $(".optn").mouseover(function () {//设置当前所选项的鼠标滑过事件

     

                    objL = $(this); //获取当前对象

     

                    setInitValue(objL); //设置当前位置

     

                    var allY = curY - curH + "px"; //设置提示框的Top

     

                    objL.addClass("optnFocus"); //增加获取焦点时的样式

     

                    objL.next("ul").show().css({ "top": allY, "left": curW }) //显示并设置提示框的坐标

     

                    //$("#aa").show().css({ "top": allY, "left": curW }) //显示并设置提示框的坐标

     

                    $("#sort").show().css({ "top": srtY, "left": srtX }); //显示并设置提示箭头的坐标

     

                })

     

     

     

                //设置当前所选项的鼠标移出事件

     

                $(".optn").mouseout(function () {

     

                    $(this).removeClass("optnFocus"); //删除获取焦点时的样式

     

                    $(this).next("ul").hide(); //隐藏提示框

     

                    $("#sort").hide(); //隐藏提示箭头

     

                })

     

     

     

    Jquery对表格的操作

     

        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

     

        <script type="text/javascript">

     

            $(function () {

     

     

     

                //隔行变色

     

                $("table tr:nth-child(even)").css("background-color", "#eee");

     

                //单击全选

     

                $("#chb_selectAll").click(function () {

     

                    if (this.checked) {

     

                        $("table tr td input[type=checkbox]").attr("checked", true);

     

                    }

     

                    else {

     

                        $("table tr td input[type=checkbox]").attr("checked", false);

     

                    }

     

                });

     

     

     

                //反选

     

                $("chb_ReselectAll").click(function () {

     

                    $("table tr td input[type=checkbox]").attr("checked", function () {

     

                        return !$("this").attr("checked");

     

                    })

     

                })

     

     

     

                //删除按钮单击事件

     

                $("#btn_delete").click(function () {

     

                    var intL = $("table tr td input:checked:not('chb_selectAll')").length;  //获取除全选框以外的所有选中项(的个数)

     

                    if (intL != 0)  //如果有选中项

     

                    {

     

                        $("table tr td input[type=checkbox]:not('chb_selectAll')").each(function (index) {

     

                            if (this.checked) {

     

                                $("table tr[id=" + this.value + "]").remove();  //获取选中的值并删除该值所在的行

     

                            }

     

                        })

     

                    }

     

                });

     

     

     

                //小图片鼠标移动事件

     

                var x = 5; var y = 15;  //初始化提示图片位置

     

                $("table tr td img").mousemove(function (e) {

     

                    $("#lbXY").html("x:" + e.pageX + " y:" + e.pageY);

     

                    $("#imgTip").attr("src", this.src).css({ "top": (e.pageY + y) + "px", "left": (e.pageX + x) + "px" }).show(500);

     

     

     

                });

     

     

     

                //小图片鼠标移出事件

     

                $("table tr td img").mousemove(function () {

     

                    $("#imgTip").hide(); //隐藏图片

     

                });

     

            })

     

        </script>

     

     

     

    AJAX 笔记汇总

     

    (ajax局部刷新属于jquery中的一种技术,所以还是需要引入外部脚本库的)

     

        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

     

     

     

    基本格式步骤

     

     

     

    //将被调用: 根据浏览器创建对象

     

        <script type="text/javascript">

     

            var xmlHttp;  //请求对象

     

            //方法 : 根据浏览器创建对象

     

            function wjq_createXMLHttpRequest() {

     

                if (window.ActiveXObject)

     

                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

     

                else if (window.XMLHttpRequest)

     

                    xmlHttp = new XMLHttpRequest();

     

            }

     

    //将被调用: 准备请求

     

            function wjq_callback_state() {

     

                // readyState : 4请求完毕 3是正在发送 

     

                     //status : 200是请求成功  400是禁止方法( 禁止状态码是400)

     

                 if (xmlHttp.readyState== 4 && xmlHttp.status== 200)

     

                    //xmlHttp.responseText接收到的数据字符串

     

                    $("#kjid").html(xmlHttp.responseText);

     

                    //document.write(xmlHttp.responseText);

     

            }

     

     

     

    //大方法( 将调用以上两个方法) : 开始发送请求来接收数据

     

            function wjq_startRequest() {

     

                wjq_createXMLHttpRequest(); //调用上面写的方法( 调用方法直接执行的时必须加括号

     

                //发送HTTP请求

     

    xmlHttp.open("GET",

     

                          "dataPage.aspx?firstName='zhao'&age=22&id="+Date().toString(),

     

                           True

     

                         );

     

                //接收到返回结果后如何处理

     

                xmlHttp.onreadystatechange = wjq_callback_state; //函数赋值语句不加括号

     

                xmlHttp.send(null);  //获取到的数据就是dataPage.aspx执行后页面呈现的内容,包括后台数据和前台数据

     

            }

     

        </script>

     

     

     

             以下是dataPage.aspx后台Page_Load方法内的代码:

     

                Response.Write("这些数据时从后台搞到的奥!但是下方的滚动条没走,神奇吧<br/>"+DateTime.Now.ToShortDateString()+Request.Params["firstName"]);

     

                //Response.End();

     

             以下是dataPage.aspx前台的代码:

     

        <form id="form1" runat="server">

     

            <div class="divBlock">

     

                <label>这是dataPage.aspx前台页面类名为divBlockdiv内的内容</label>

     

            </div>

     

        </form>

     

     

     

    简化后的格式

     

    //往另一个页面后台传数据,并获取后台数据

     

      $("#btn_getBackDate1").click(function () {

     

       //从后台获取数据,不走服务器(但往后台传了值)

     

       //如果后台加Response.End();则只加载后台数据

     

            $("#lbID").load("Default.aspx?firstName='zhao'")

     

       })

     

    //获取另一个页面前台的值

     

      $("#btn_getForeDate1").click(function () {

     

       //获取另一个页面前台的值(表示获取页面Default.aspx中类名为divBlock的元素内的全部元素)

     

       //此时Default.aspx页面后台不能有Response.End();这句话,否则加载不到其前台数据,

     

       //因为Response.End();限制只加载后台数据

     

              $("lbID").load("Default.aspx .divBlock")

     

       })

     

    获取json数据

     

    //jason是一个对象,没有大小限制,用于存放数据  { key:value , key:value , key:value}

     

    //例如:["name":'wjq' , "password":'123',"name":'wjq' , "password":'123']

     

    $("#btn_getJson").click(function () {

     

         $("#lb_getJson").empty();  //先清空一下数据

     

             $.getJSON("/tool/myJson.json", function (val) {

     

                  $.each(val, function (k, v) {

     

                       //$("#lb_getJson").append(val[k])

     

                        $("#lb_getJson").append(v["name"] + "<br/>").append(v["password"] + "<br/>").append(v["email"] + "<br/>")

     

                  })

     

         })

     

    })

     

    : tool文件夹下的myJson.json文件中数据为:

     

    [

     

     {

     

      "name":"wang" ,

     

      "password":"123" ,

     

      "email":"wjqxw@hotmail.com"

     

     },

     

     {

     

      "name":"ji" ,

     

      "password":"456" ,

     

      "email":"wjqxw@hotmail.com"

     

     },

     

     {

     

      "name":"quan" ,

     

      "password":"789" ,

     

      "email":"wjqxw@hotmail.com"

     

     }

     

    ]

     

    获取javascript数据

     

    $("#btn_getjavascript").click(function () {

     

        //加载一些js文件(js加载到当前页面)

     

        $.getScript("/tool/myJs.js", function (val) {

     

            $("#lb_getJs").html(val);

     

        })

     

    })

     

    : tool文件夹下的myJs.js文件中数据为:

     

    function test() {

     

        alert("这个javascript函数用于测试ajax获取js数据");

     

    }

     

     

     

     

     

     

     

    获取XML数据

     

    $("#btn_getXMLdata").click(function () {

     

            //打开文件,并通过回调函数处理获取到的数据

     

            alert("开始获取");

     

            $.get("/tool/XMLFile1.xml", function (data) {

     

              

     

                $("#divTip").empty();  //先清空一下标记中的内容

     

                var strHTML = "";   //初始化保存内容变量

     

                $(data).find("person").each(function () {  //遍历获取的数据

     

                    var $strUser = $(this);

     

                    alert($strUser);

     

                    strHTML += "姓名: " + $strUser.find("name").text() + "<br/>";

     

                    strHTML += "性别: " + $strUser.find("sex").text() + "<br/>";

     

                    strHTML += "邮箱: " + $strUser.find("email").text() + "<br/>";

     

                })

     

                $("#divTip").html(strHTML);  //显示处理后的数据

     

            });

     

        })

     

    })

     

     

     

    与一般处理程序交互

     

    $("#btn_ashx").click(function () {

     

        //$.load("/tool/Handler1.ashx");

     

        //name: escape('') 也是对中文编码   name: encodeURI('')是对中文编码

     

        //.post  如果传json 则用post 传输的数据量大

     

    $.get("/tool/Handler1.ashx",

     

             { name: encodeURI('这是发送的数据,.ashx,context.Request["name"]接收') },

     

             function (val) {  alert("返回的值为:" + val); }

     

         )

     

    })

     

    : tool文件夹下的Handler1.ashx文件中ProcessRequest方法为:

     

            public void ProcessRequest(HttpContext context)

     

            {

     

                string name = System.Web.HttpUtility.UrlDecode(context.Request["name"]);  //解密

     

                //string sex = (context.Request["txt_wPsd"]);  //解密

     

                if (name == "wang")

     

                {     context.Response.Write("王集权");      }

     

                else

     

                {     context.Response.Write(name+"不知道是谁");    }

     

                //context.Response.ContentType = "text/plain";

     

            }

     

     

     

    参数序列化

     

    $("#btn_requireDate").click(function () {

     

        //参数序列化

     

    $.post( "/tool/Handler1.ashx",

     

              $("#form1").serialize(),

     

              function (date, status) {  if (status == "success") {alert("请求到的数据为:" + date); } }

     

            )

     

    })

     

    : tool文件夹下的Handler1.ashx文件中ProcessRequest方法为:

     

    如果#form1内的控件ID txt_sendData

     

    则在tool文件夹下的Handler1.ashx文件中ProcessRequest方法与上面的( :……)一样,只是

     

    string name = System.Web.HttpUtility.UrlDecode(context.Request["txt_sendData"]);  //解密

     

     

     

     

     

    ajax发送/获取数据

     

    $("#btn_requireDate").click(function () {

     

            //参数序列化

     

            $.ajax({

     

                url: "/tool/Handler1.ashx?name=wang",

     

                dataType: "text",

     

                success: function (date) { alert("请求到的数据为:" + date); }

     

            })

     

        })

     

    })

     

     

     

    // $.ajax 使用HTTP请求加载远程页面

     

    $("#btn_getData").click(function () {

     

        $.ajax({

     

            type: "GET",

     

            url: "/tool/Handler3.ashx",

     

            dataType: "text",

     

            success: function (data) {

     

                var dataobj = eval("(" + data + ")"); //转换为json对象

     

                alert(dataobj[0]["name"]);

     

            }

     

        });

     

    }); //end   

     

     

     

    //设置AJAX请求的全局设置

     

            $.ajaxSetup({

     

                url: "tool/6-10.json",

     

                dataType: "json",

     

                success: function (data) {

     

                    alert(data);

     

                }

     

            });

     

            $("#Button1").click(function () {

     

                $.ajax();

     

            });

     

        });

     

     

     

    //使用$.each()工具函数遍历ajaxSetting(系统)对象

     

          var strContent = "<li>属性: </li>";

     

          $.each($.ajaxSettings, function (property, value) {

     

              strContent += "<li>" + property + ":" + value + "</li>";

     

          })

     

          $("ul").append(strContent);

     

     

     

    //使用$.grep()工具函数筛选数组中的元素,筛选元素值大于5 索引号小于8

     

                var strTmp = "筛选前数据";

     

                var arrNum = [2, 8, 3, 7, 4, 9, 10, 9, 7, 21];

     

                var arrGet = $.grep(arrNum, function (ele, index) {

     

                    return ele > 5 && index < 8

     

                })

     

                strTmp += arrNum.join();

     

                strTmp += "<br/><br>筛选后数据:"

     

                strTmp += arrGet.join();

     

                $("#divTip").append(strTmp);

     

                //-------------------------------------------------

     

                //使用$.map()工具函数变更数组中的元素

     

            })

     

     

     

    标准ajax步骤(XML发表 获取点评为例)

     

    Ajax: get

     

          <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

     

        <script type="text/javascript">

     

            $(function () {

     

                loadData();

     

                //发表点击按钮

     

                $("#btn_yes").click(function () {

     

                    //获取加码后的用户名

     

                    var strName = encodeURI($("#txtName").val());

     

                    //获取加码后的发表内容

     

                    var strContent = encodeURI($("#txtContent").val());

     

                    $.ajax({

     

                        type: "GET",

     

                        url: "AppData.aspx",  //请求加载数据动态页

     

                        dataType: "html",

     

                        data: { name: strName, content: strContent },

     

                        success: function (msg) {

     

                            alert(msg);

     

                            loadData();

     

                            $("#txtName").val("");

     

                            $("#txtContent").val("");

     

                        }

     

                    })

     

                })

     

     

     

                //动态加载xml点评数据

     

                function loadData() {

     

                    $.ajax({

     

                        type: "GET",

     

                        url: "/tool/XMLFileCommon.xml",

     

                        dataType: "xml",

     

                        cache: false,

     

                        success: function (data) {

     

                            $("#lb_comment").empty();

     

                            var strHTML = "";

     

                            //如果没有找到数据

     

                            if ($(data).find("Data").length == 0) {

     

                                alert("抱歉,目前还没有找到点评数据!")

     

                            }

     

                            //遍历获取的数据

     

                            $(data).find("Data").each(function () {

     

                                var $strUser = $(this);

     

                                strHTML += "<div>" + "<a href='#'>" + $strUser.find("name").text() + "</a></div>"

     

                                strHTML += "<div>" + $strUser.find("content").text() + "</div>";

     

                                strHTML += "<div>发送时间: " + $strUser.find("date").text() + "</div>";

     

                            })

     

                            $("#lb_comment").html(strHTML);  //显示处理后的数据

     

                        }

     

     

     

                    })

     

                }

     

            })

     

        </script>

     

    : AppData.aspx前台页面内容:

     

    <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>

     

    <%@ Import Namespace="System.Xml" %>

     

    <%@ Import Namespace="System.IO" %>

     

    <%

     

        string strName = System.Web.HttpUtility.UrlDecode(Request["name"]); //解码点评用户名称

     

        string strContent = System.Web.HttpUtility.UrlDecode(Request["content"]); //解码点评提交内容

     

        string strFileName = "/tool/XMLFileCommon.xml";

     

        //定义xml文档变量

     

        XmlDocument xmlDoc = new XmlDocument();

     

        //打开指定的xml文档

     

        xmlDoc.Load(Server.MapPath(strFileName));

     

        //查找根节点元素

     

        XmlNode xmlN = xmlDoc.SelectSingleNode("Comment");

     

        //加入一个节点元素

     

        XmlElement xmlE = xmlDoc.CreateElement("Data");

     

       

     

        //创建一个子节点

     

        XmlElement xmlEn = xmlDoc.CreateElement("name");

     

        //设置节点文本

     

        xmlEn.InnerText = strName;

     

       

     

        //添加到节点中

     

        xmlE.AppendChild(xmlEn);

     

        //创建一个子节点

     

        XmlElement xmlEc = xmlDoc.CreateElement("content");

     

        //设置节点文本

     

        xmlEc.InnerText = strContent;

     

        //添加到节点中

     

        xmlE.AppendChild(xmlEc);

     

        //创建一个子节点

     

        XmlElement xmlEd = xmlDoc.CreateElement("date");

     

        //获取时间的时分秒

     

        string strSendTime = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;

     

        xmlEd.InnerText =strSendTime;

     

        //添加到节点中

     

        xmlE.AppendChild(xmlEd);

     

        

     

        //将节点加入根节点中  

     

        xmlN.AppendChild(xmlE);

     

        //保存创建好的xml文档

     

        xmlDoc.Save(Server.MapPath(strFileName));

     

        Response.Write("您的点评已成功发表!");

     

    %>

     

    //--: tool文件夹下的XMLFileCommon.xml文件中数据为 :-------------

     

    <?xmlversion="1.0"encoding="utf-8"?>

     

    <personid="这里是idvalue">

     

      <!---->

     

      <teachername="zhao"id="1"sex="man"/>

     

      <student>

     

        <name>学生1</name>

     

        <sex></sex>

     

        <age>22</age>

     

        <email>wjqxw@hotmail.com</email>

     

      </student>

     

    </person>

     

     

     

    Ajax: post

     

     

     

    <script type="text/javascript">

     

            $(function () {

     

                $("#Button1").click(function () {

     

                alert("aa")

     

                    $.ajax({

     

                        type: "post",

     

                        url: "http://www.haitian.com.cn/",

     

                        //dataType: "html",

     

                        cache: false,

     

                        success: function (data, state) {

     

                            alert(state);

     

                            alert(data);

     

                            var aa = $(data).find("#srcPic").children("img").attr("src");

     

                            alert(aa);

     

                        }

     

     

     

                    })

     

                })

     

            })

     

       

     

        </script>

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    cf 1179 C
    P5055 【模板】可持久化文艺平衡树 可持久化fhqtreap
    bzoj4605: 崂山白花蛇草水 权值线段树套KDtree
    luoguP4173 残缺的字符串 FFT
    [HNOI2016]序列 CDQ+DP
    [TJOI2017]不勤劳的图书管理员
    loj2058 「TJOI / HEOI2016」求和 NTT
    bzoj4503: 两个串
    luoguP4721 【模板】分治 FFT
    [Cqoi2016]K远点对 K-Dtree
  • 原文地址:https://www.cnblogs.com/wangjiquan/p/2615781.html
Copyright © 2011-2022 走看看