1. 程式人生 > 實用技巧 >JS學習筆記一

JS學習筆記一

1、類
2、原型
3、陣列和鍵值對
4、時間物件
5、型別
6、判等
7、定義方法
8、JS不存在方法過載
9、定義匿名函式
10、對話方塊
11、location頁面跳轉
12、獲取元素
13、事件
14、載入完成事件
15、定時器
16、設定style樣式
17、event
18、動態新增元素
19、關於滑鼠的事件
20、innerText和innerHTML

1、類

function
Person(name) { this.Name = name;//在類內部宣告一個屬性Name,初始化為name值 this.say = function() { alert(this.Name); }; //類是沒有返回值的,所以如下程式碼可以不寫 //return name; } //使用構造方法建立物件 var p1 = new Person('zhh'); //p1.say();//呼叫 方法 //
alert(typeof (p1));//object //alert(typeof (Person('zhh')));//因為Person作為函式時,沒有返回值,所以是undefined //alert(typeof(Person));//Person就是一個函式,型別是function

function Person() {
            
        }
        //為物件增加成員
        //var p1 = new Person();
        //p1.Name = "zhh";//為物件p1新建了一個屬性Name
        //p1.say = function() {
// alert(p1.Name); //}; //p1.say(); //新建出來的物件,是沒有Name屬性的,因為類Person中沒有Name屬性 //var p2 = new Person(); //alert(p2.Name);

2、原型

//原型:物件的型別

        function Person() {
            this.Age = 100;
        }

        var p1 = new Person();
        //p1.Title = 'abc';
        
        //訪問原型
        p1.__proto__.Title = 'abc';//為原型註釋資料成員
        //Person.prototype.Title = 'abc';//功能同上面的程式碼

        var p2 = new Person();
        alert(p2.Title);

3、陣列和鍵值對

//使用[]定義陣列
        var array1 = [123, 'abc'];
        array1[0];

        //鍵值對{鍵:值,...}
        var array2 = {            
            name: 'zhh',
            age: 18,
            gender:'你猜'
        };
        //alert(array2['name']);//將array2認為是集合,通過鍵訪問值
        //alert(array2.name);//將array2認為是json,通過屬性訪問值
        
        //定義json陣列
        var temp = [{
            title: 'zhh',
            age:18
        }, {
            title: '牛頭',
            age:20
        }, {
            title: '馬面',
            age:22
        }];
        //輸出每個物件的title值
        for (var index in temp) {//temp是陣列,所以index是索引
            alert(temp[index].title);
        }

4、時間物件

//建立時間物件
        //var date = new Date();
        ////獲取世界時間,會提示當前時區
        //alert(date.toString());
        ////獲取當前時區的當前時間
        //alert(date.toLocaleString());

5、型別

//當變數被宣告之後,沒有初始化,則值為undefined
        var a1;
        //alert(a1);
        
        //輸出型別
        //alert(typeof(a1));//返回a1變數的型別對應的字串

        //指定null值時,當前變數為null
        a1 = null;
        //alert(a1);
        //alert(typeof(a1));//null是一個object的值

        //class Person{}

        var a2 = '100';
        alert(a2 + 1);//字串拼接
        alert(parseInt(a2) + 1);//轉成整數後,進行算術加運算

6、判等

        //var a1;
        //var a2 = null;
        
        //undefined表示沒有,null表示沒有
        //if (a1 == a2) {
        //    alert('ok');
        //} else {
        //    alert('no');
        //}
        
        //三個等號先判斷型別是否相同,再判斷值是否相同
        //if (a1 === a2) {
        //    alert('ok');
        //} else {
        //    alert('no');
        //}

7、定義方法

        //function 方法名(引數列表){...}
        function add(a, b) {
            //alert(a + b);
            return a + b;//使用return返回值
        }
        //快捷鍵func,tab
        function add2(a, b, c) {
            alert(a + b + c);
            //return a + b + c;
        }

        //呼叫方法
        //var sum = add(1, 2);//直接使用變數接收方法的返回值
        //alert(sum);

        //接收沒有返回值的方法
        var sum2 = add2(1, 2, 3);
        alert(sum2);

8、不存在方法過載

       //後宣告的函式會將先宣告的函式覆蓋 
        function add(a, b) {
            alert(a + b);
        }
        
        function add(a,b,c) {
            alert(a + b + c);
        }

9、定義匿名函式

//定義匿名函式,賦值給一個變數
            var f1 = function(a, b) {
                alert(a+b);
            };   

10、對話方塊

        //alert('123');//提示框,只有一個“確定”按鈕

        //確認框,有“確定”、“取消”兩個按鈕
        //點確定返回true,點取消返回false
        //var result = confirm('確定要刪除嗎?');
        //alert(result);

        //輸入框:有一個文字框,一個“確定”按鈕,一個“取消”按鈕
        //點確定則返回文字框中的值,點取消則返回null
        //var result = prompt('請輸入年齡', '10');
        //alert(result);

11、location頁面跳轉

//將位址列的url進行改寫,效果是可以完成頁面跳轉
        location.href = '01對話方塊.html';

12、獲取元素

        //根據id獲取元素,因為id是唯一的,所以只返回一個dom物件
        var temp1 = document.getElementById('btnShow');
        //name是可以重複的,所以返回一個dom物件陣列
        var temp2 = document.getElementsByName('btnShow');

13、事件

            //推薦使用這種方式註冊事件
            //好處:實現了程式碼分離(html與js);可以使用this
            document.getElementById('btnShow2').onclick= function() {
                alert(this.value);
            }

14、載入完成事件

//頁面中的所有節點載入完成後,會觸發此事件
        onload = function () {
            //當節點存在後,找到並註冊點選事件
            document.getElementById('span1').onclick = function() {
                alert('ok');
            };
        };

15、定時器

setInterval(birdFly1, 100);

16、設定style樣式

var msg = document.getElementById('msg');
msg.style.left = left + 'px';

17、Event

document.getElementById('btnShow').onclick = function(e) {
                //event在事件發生時,由瀏覽器創建出來的一個物件,包含了滑鼠的位置等資訊
                //alert(event);
                //對於早期ie瀏覽器,不支援引數e的形式
                //對於ff瀏覽器,不支援event保留關鍵字
                //對於最新的ie瀏覽器,兩種方式都支援
                alert(e.clientX);
            };

18、動態新增元素

//追加圖片
            document.getElementById('btnImg').onclick = function() {
                //建立img物件
                var img = document.createElement('img');
                //通過屬性src指定要顯示的圖片
                img.src = 'images/bird1.png';
                //在div中追加圖片物件
                document.getElementById('divContainer').appendChild(img);
            };
            //追加文字框
            document.getElementById('btnText').onclick = function() {
                //建立input物件
                var input = document.createElement('input');
                //設定屬性
                input.type = "text";
                //加入div中
                document.getElementById('divContainer').appendChild(input);
            };
            //追加超連結
            document.getElementById('btnA').onclick = function() {
                //建立a物件
                var a = document.createElement('a');
                //設定屬性
                a.href = '10Event.html';
                a.innerHTML = '點選顯示';
                //加入div中
                document.getElementById('divContainer').appendChild(a);
            };
            
            //刪除所有元素
            document.getElementById('btnRemove').onclick = function() {
                //獲取所有子元素
                var childs = document.getElementById('divContainer').childNodes;
                //遍歷子元素,逐個刪除
                for (var i = childs.length-1; i >=0; i--) {
                    document.getElementById('divContainer').removeChild(childs[i]);
                }
            };

19、關於滑鼠的事件

//獲取所有的img標籤
            var imgs = document.getElementsByTagName('img');
            //遍歷所有的圖片物件
            for (var index in imgs) {
                //為每個圖片物件註冊指向事件
                imgs[index].onmouseover = function() {
                    //將當前及之前的圖片變黃,之後的圖片變灰
                    var id = this.id;
                    for (var i = 0; i < imgs.length; i++) {
                        //當前元素及之前的元素
                        if (i <= id) {
                            imgs[i].src = 'images/star2.png';
                        } else {
                            //當前元素之後的元素
                            imgs[i].src = 'images/star1.png';
                        }
                    }
                };
                
                //為每個圖片物件註冊移開事件
                imgs[index].onmouseout = function() {
                    //被點選的項及之前的元素是黃色
                    for (var i = 0; i <= clickIndex; i++) {
                        imgs[i].src = 'images/star2.png';
                    }
                    //將點選的項之後的元素變成灰色
                    for (var i = clickIndex+1; i < imgs.length; i++) {
                        imgs[i].src = 'images/star1.png';
                    }
                };

20、innerText和innerHTML

document.getElementById('btnShowText').onclick = function() {
                //獲取div內的文字
                alert(document.getElementById('div1').innerText);
            };
            document.getElementById('btnShowHTML').onclick = function() {
                //獲取div內的html
                alert(document.getElementById('div1').innerHTML);
            };