posts - 42, comments - 7, trackbacks - 0, articles - 1

          JS學習筆記

          Posted on 2008-04-19 07:59 TuringJava 閱讀(659) 評論(0)  編輯  收藏 所屬分類: JS

          javascript 學習筆記 《JavaScript And DHTML Cookbook》

          ·字符串(String)
            1.聲明
              var myString = new String("Every good boy does fine.");
              var myString = "Every good boy does fine.";

            2.字符串連接
              var myString = "Every " + "good boy " + "does fine.";
              var myString = "Every ";  myString += "good boy does fine.";

            3.截取字符串
              //截取第 6 位開始的字符
              var myString = "Every good boy does fine.";
              var section = myString.substring(6);    //結果: "good boy does fine."
              
              //截取第 0 位開始至第 10 位為止的字符
              var myString = "Every good boy does fine.";
              var section = myString.substring(0,10); //結果: "Every good"
              
              //截取從第 11 位到倒數第 6 位為止的字符
              var myString = "Every good boy does fine.";
              var section = myString.slice(11,-6);    //結果: "boy does"
              
              //從第 6 位開始截取長度為 4 的字符
              var myString = "Every good boy does fine.";
              var section = myString.substr(6,4);     //結果: "good"

            4.轉換大小寫
              var myString = "Hello";
              var lcString = myString.toLowerCase();  //結果: "hello"
              var ucString = myString.toUpperCase();  //結果: "HELLO"

            5.字符串比較
              var aString = "Hello!";
              var bString = new String("Hello!");
              if( aString == "Hello!" ){ }    //結果: true
              if( aString == bString ){ }     //結果: true
              if( aString === bString ){ }    //結果: false (兩個對象不同,盡管它們的值相同)

            6.檢索字符串
              var myString = "hello everybody.";
              // 如果檢索不到會返回-1,檢索到的話返回在該串中的起始位置
              if( myString.indexOf("every") > -1 ){ } //結果: true

            7.查找替換字符串
              var myString = "I is your father.";
              var result = myString.replace("is","am");   //結果: "I am your father."

            8.特殊字符:
              \b : 后退符         \t : 水平制表符
              \n : 換行符         \v : 垂直制表符
              \f : 分頁符         \r : 回車符
              \" : 雙引號         \' : 單引號
              \\ : 反斜桿

            9.將字符轉換成Unicode編碼
              var myString = "hello";
              var code = myString.charCodeAt(3);  //返回"l"的Unicode編碼(整型)
              var char = String.fromCharCode(66); //返回Unicode為66的字符

            10.將字符串轉換成URL編碼
              var myString = "hello all";
              var code = encodeURI(myString);     //結果: "hello%20all"
              var str = decodeURI(code);          //結果: "hello all"
              //相應的還有:  encodeURIComponent()  decodeURIComponent()

            11.將字符串轉換成base64編碼
              // base64Encode()  base64Decode()  用法同上

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

          ·數字型(Number)
            1.聲明
              var i = 1;
              var i = new Number(1);

            2.字符串與數字間的轉換
              var i = 1;
              var str = i.toString();     //結果: "1"
              var str = new String(i);    //結果: "1"
              i = parseInt(str);          //結果: 1
              i = parseFloat(str);        //結果: 1.0
              
              //注意: parseInt,parseFloat會把一個類似于"32G"的字符串,強制轉換成32

            3.判斷是否為有效的數字
              var i = 123;  var str = "string";
              if( typeof i == "number" ){ }   //true
              
              //某些方法(如:parseInt,parseFloat)會返回一個特殊的值NaN(Not a Number)
              //請注意第2點中的[注意],此方法不完全適合判斷一個字符串是否是數字型!!
              i = parseInt(str);
              if( isNaN(i) ){ }
              
            4.數字型比較
              //此知識與[字符串比較]相同

            5.小數轉整數
              var f = 1.5;
              var i = Math.round(f);  //結果:2 (四舍五入)
              var i = Math.ceil(f);   //結果:2 (返回大于f的最小整數)
              var i = Math.floor(f);  //結果:1 (返回小于f的最大整數)

            6.格式化顯示數字
              var i = 3.14159;
              
              //格式化為兩位小數的浮點數
              var str = i.toFixed(2);     //結果: "3.14"
              
              //格式化為五位數字的浮點數(從左到右五位數字,不夠補零)
              var str = i.toPrecision(5); //結果: "3.1415"

            7.X進制數字的轉換
              //不是很懂 -.-
              var i = parseInt("0x1f",16);
              var i = parseInt(i,10);
              var i = parseInt("11010011",2);

            8.隨機數
              //返回0-1之間的任意小數
              var rnd = Math.random();
              //返回0-n之間的任意整數(不包括n)    
              var rnd = Math.floor(Math.random() * n)

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

          ·Math對象
            1. Math.abs(num) : 返回num的絕對值
            2. Math.acos(num) : 返回num的反余弦值
            3. Math.asin(num) : 返回num的反正弦值
            4. Math.atan(num) : 返回num的反正切值
            5. Math.atan2(y,x) : 返回y除以x的商的反正切值
            6. Math.ceil(num) : 返回大于num的最小整數
            7. Math.cos(num) : 返回num的余弦值
            8. Math.exp(x) : 返回以自然數為底,x次冪的數
            9. Math.floor(num) : 返回小于num的最大整數
            10.Math.log(num) : 返回num的自然對數
            11.Math.max(num1,num2) : 返回num1和num2中較大的一個
            12.Math.min(num1,num2) : 返回num1和num2中較小的一個
            13.Math.pow(x,y) : 返回x的y次方的值
            14.Math.random() : 返回0到1之間的一個隨機數
            15.Math.round(num) : 返回num四舍五入后的值
            16.Math.sin(num) : 返回num的正弦值
            17.Math.sqrt(num) : 返回num的平方根
            18.Math.tan(num) : 返回num的正切值
            19.Math.E : 自然數(2.718281828459045)
            20.Math.LN2 : 2的自然對數(0.6931471805599453)
            21.Math.LN10 : 10的自然對數(2.302585092994046)
            22.Math.LOG2E : log 2 為底的自然數(1.4426950408889634)
            23.Math.LOG10E : log 10 為底的自然數(0.4342944819032518)
            24.Math.PI : π(3.141592653589793)
            25.Math.SQRT1_2 : 1/2的平方根(0.7071067811865476)
            26.Math.SQRT2 : 2的平方根(1.4142135623730951)

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

          ·日期型(Date)
            1.聲明
              var myDate = new Date();    //系統當前時間
              
              var myDate = new Date(yyyy, mm, dd, hh, mm, ss);
              var myDate = new Date(yyyy, mm, dd);
              var myDate = new Date("monthName dd, yyyy hh:mm:ss");
              var myDate = new Date("monthName dd, yyyy");
              var myDate = new Date(epochMilliseconds);

            2.獲取時間的某部份
              var myDate = new Date();
              myDate.getYear();       //獲取當前年份(2位)
              myDate.getFullYear();   //獲取完整的年份(4位,1970-????)
              myDate.getMonth();      //獲取當前月份(0-11,0代表1月)
              myDate.getDate();       //獲取當前日(1-31)
              myDate.getDay();        //獲取當前星期X(0-6,0代表星期天)
              myDate.getTime();       //獲取當前時間(從1970.1.1開始的
          毫秒數)
              myDate.getHours();      //獲取當前小時數(0-23)
              myDate.getMinutes();    //獲取當前分鐘數(0-59)
              myDate.getSeconds();    //獲取當前秒數(0-59)
              myDate.getMilliseconds();   //獲取當前毫秒數(0-999)
              myDate.toLocaleDateString();    //獲取當前日期
              myDate.toLocaleTimeString();    //獲取當前時間
              myDate.toLocaleString( );       //獲取日期與時間

            3.計算之前或未來的時間
              var myDate = new Date();
              myDate.setDate(myDate.getDate() + 10);  //當前時間加10天
              //類似的方法都基本相同,以set開頭,具體參考第2點

            4.計算兩個日期的偏移量
              var i = daysBetween(beginDate,endDate); //返回天數
              var i = beginDate.getTimezoneOffset(endDate); //返回分鐘數

            5.檢查有效日期
              //checkDate() 只允許"mm-dd-yyyy"或"mm/dd/yyyy"兩種格式的日期
              if( checkDate("2006-01-01") ){ }
              
              //正則表達式(自己寫的檢查 yyyy-mm-dd, yy-mm-dd, yyyy/mm/dd, yy/mm/dd 四種)
              var r = /^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;
              if( r.test( myString ) ){ }

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

          ·數組(Array)
            1.聲明
              var arr = new Array();      //聲明一個空數組
              var arr = new Array(10);    //聲明一個10個長度的數組
              var arr = new Array("Alice", "Fred", "Jean");   //用值初始化數組
              var arr = ["Alice", "Fred", "Jean"];    //用值初始化數組
              var arr = [["A","B","C"][1,2,3]];   //聲明一個二(多)維數組

            2.數組的訪問
              arr[0] = "123";     //賦值
              var str = arr[0];   //獲取
              arr[0][0] = "123";  //多維數組賦值

            3.數組與字符串間的轉換
              var arr = ["A","B","C","D"];    //聲明
              
              //數組按分隔符轉換成字符串
              var str = arr.join("|");        //結果: "A|B|C|D"
              
              //字符串切割成數組
              arr = str.split("|");

            4.遍歷數組
              for( var i=0; i<arr.length; i++ ){ alert(arr[i]); }

            5.排序
              var arr = [12,15,8,9];
              arr.sort(); //結果: 8 9 12 15

            6.組合與分解數組
              var arr1 = ["A","B","C","D"];
              var arr2 = ["1","2","3","4"];
              
              //獎兩個數組組合成一個新的數組
              var arr = arr1.concat(arr2);    //結果: ["A","B","C","D","1","2","3","4"]
              
              //將一個數組切成兩個數組(參數1:起始索引,參數2:切割長度)
              var arr3 = arr.splice(1,3);     //結果: arr3:["B","C","D"] arr["A","1","2","3","4"]
              
              //將一個數組切成兩個數組,并在原數組補新值
              var arr4 = arr.splice(1,3,"AA");    //結果: arr4:["B","C","D"] arr["A","AA","1","2","3","4"]

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

          ·自定義對象
            1.聲明:
              function myUser(uid,pwd){
                  this.uid = uid;
                  this.pwd = pwd || "000000"; //默認值
                  this.show = showInfo;       //方法
              }
              
              //下面的函數不是自定義對象,是自定義對象的方法.繼續看下去就明白了
              function showInfo(){
                  alert("用戶名:" + this.uid + ",密碼:" + this.pwd)
              }

            2.實例化:
              var user = new myUser("user","123456");
              var user = {uid:"user",pwd:"123456"};

            3.獲取與設置
              alert("用戶名是:" + user.uid);  //get
              user.uid = "newuser";           //set
              user.show();                    //調用show()方法

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

          ·變量 函數 流程控制
            1.變量
              var i = 1;
              var i = 1, str = "hello";

            2.函數
              function funName(){
                  //do something.
              }
              function funName(param1[,paramX]){
                  //do something.
              }

            3.嵌套函數
              //某種情況,你需要創建一個函數本身所獨有的函數.
              function myFunction(){
                  //do something.
                  privateFunction();
                  function privateFunction(){
                      //do something.
                  }
              }

            4.匿名函數
              var tmp = function(){ alert("only test."); }
              tmp();

            5.延遲函數調用
              var tId = setTimeout("myFun()",1000);   //延遲1000毫秒后再調用myFun()函數
              fucntion myFun(){
                  //do something
                  clearTimeout(tId);  //銷毀對象
              }

            6.流程控制
              if( condition ){ }
              if( condition ){ } else{ }
              if( condition ){ } else if( condition ){ } else{ }

              switch( expression ){
                  case valA : statement; break;
                  case valB : statement; break;
                  default : statement; break;
              }

            7.異常捕獲
              try{ expression } catch(e){ } finally{ }
              
              //不處理任何異常
              window.onerror = doNothing;
              function doNothing(){ return true; }
              
              //異常類可用的屬性
              description : 異常描述(IE,NN)
              fileName    : 異常頁面URI(NN)
              lineNumber  : 異常行數(NN)
              message     : 異常描述(IE,NN)
              name        : 錯誤類型(IE,NN)
              number      : 錯誤代碼(IE)
              
              //錯誤信息(兼容所有瀏覽器)
              try{ }
              catch(e){
                  var msg = (e.message) ? e.message : e.description;
                  alert(msg);
              }

            8.加快腳本的執行速度
              -避免使用 eval() 函數
              -避免使用 with 關鍵字
              -將重復的表達式賦值精簡到最小
              -在較大的對象中使用索引來查找數組
              -減少 document.write() 的使用

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

          ·瀏覽器特征( navigator )
            1.瀏覽器名稱
              //IE : "Microsoft Internet Explorer"
              //NS : "Netscape"
              var browserName = navigator.appName;

            2.瀏覽器版本
              bar browserVersion = navigator.appVersion;

            3.客戶端操作系統
              var isWin = ( navigator.userAgent.indexOf("Win") != -1 );
              var isMac = ( navigator.userAgent.indexOf("Mac") != -1 );
              var isUnix = ( navigator.userAgent.indexOf("X11") != -1 );

            4.判斷是否支持某對象,方法,屬性
              //當一個對象,方法,屬性未定義時會返回undefined或null等,這些特殊值都是false
              if( document.images ){ }
              if( document.getElementById ){ }

            5.檢查瀏覽器當前語言
              if( navigator.userLanguage ){ var l = navigator.userLanguage.toUpperCase(); }

            6.檢查瀏覽器是否支持Cookies
              if( navigator.cookieEnabled ){ }

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

          ·控制瀏覽器窗口( window )
            1.設置瀏覽器的大小
              window.resizeTo(800, 600);  //將瀏覽器調整到800X600大小
              window.resizeBy(50, -10);   //在原有大小上改變增大或減小窗口大小

            2.調整瀏覽器的位置
              window.moveTo(10, 20);      //將瀏覽器的位置定位到X:10 Y:20
              window.moveBy(0, 10);       //在原有位置上移動位置(偏移量)

            3.創建一個新的窗口
              var win = window.open("about.htm","winName","height=300,width=400");
              
              //參數
              alwaysLowered   //始終在其它瀏覽器窗口的后面(NN)
              alwaysRaised    //始終在其它瀏覽器窗口的前面(NN)
              channelMode     //是否為導航模式(IE)
              copyhistory     //復制歷史記錄至新開的窗口(NN)
              dependent       //新窗口隨打開它的主窗口關閉而關閉(NN)
              fullscreen      //全屏模式(所有相關的工具欄都沒有)(IE)
              location        //是否顯示地址欄(NN,IE)
              menubar         //是否顯示菜單欄(NN,IE)
              scrollbars      //是否顯示滾動條(NN,IE)
              status          //是否顯示狀態欄(NN,IE)
              toolbar         //是否顯示工具欄(NN,IE)
              directories     //是否顯示鏈接欄(NN,IE)
              titlebar        //是否顯示標題欄(NN)
              hotkeys         //顯示菜單快捷鍵(NN)
              innerHeight     //內容區域的高度(NN)
              innerWidth      //內容區域的寬度(NN)
              resizable       //是否可以調整大小(NN,IE)
              top             //窗口
          離桌面上邊界的大小(NN,IE)
              left            //窗口離桌面左邊界的大小(NN,IE)
              height          //窗口高度(NN,IE)
              width           //瀏覽器的寬度

            4.與新窗口通訊
              win.focus();  //讓新窗口獲得焦點
              win.document.write("abc");  //在新窗口上操作
              win.document.close();       //結束流操作
              opener.close();

            5.模式窗口
              window.showModalDialog("test.htm",dialogArgs,"param");      //傳遞對象
              window.showModelessDialog("test.htm",myFunction,"param");   //傳遞函數
              window.dialogArguments  //對話框訪問父窗口傳遞過來的對象
              window.returnValue      //父窗口獲取對話框返回的值
              
              //參數
              center          //窗口居中屏幕
              dialogHeight    //窗口高度
              dialogWidth     //窗口寬度
              dialogTop       //窗口離屏幕的上邊
              dialogLeft      //窗口離屏幕的左邊
              edge            //邊框風格(raised|sunken)
              help            //顯示幫助按鈕
              resizable       //是否可以改變窗口大小
              status          //是否顯示狀態欄
              
              //例子
              <script>
                  function openDialog(myForm) {
                      var result = window.showModalDialog("new.html",myForm,"center");
                  }
              </script>
              <form action="#" onsubmit="return false">
                  <input type="text" id="txtId">
                  <input type="button" id="btnChk" value="驗證是否可用" onclick="openDialog(this.form);">
              </form>

              //另一個頁面new.html
              <script>
                  window.dialogArguments.btnChk.enabled = false;  //將父窗口中的按鈕設置為不可用
                  //do something to check the Id.
                  window.write("用戶ID: " + window.dialogArguments.txtId.value + " 可使用!"); //獲取文本框的值
              </script>

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

          ·管理框架網頁( frames )
            1.創建一個框架架構網頁
              <html>
              <frameset rows="50, *">
                  <frame name="header" src="header.html">
                  <frame name="main" src="main.html">
              </frameset>
              </html>

            2.訪問框架網頁
              window.frames[i]
              window.frames["frameName"]
              window.frameName
              
              window.frames["frameName"].frames["frameName2"]
              parent.frames["frameName"]
              top.frames["frameName"]

            3.將某一頁面定向到某框架
              <a href="new.html" target="main">
              location = "new.html";
              parent.frameName.location.href = "new.html";
              top.frameName.location = "new.html";

            4.強制不讓其它框架引用某頁面
              if (top != self) {
                  top.location.href = location.href;
              }

            5.更改框架的大小
              document.framesetName.rows = "50,*";
              document.framesetName.cols = "50,*";

            6.動態創建框架網頁
              var frag = document.createDocumentFragment( );
              var newFrame= document.createElement("frame");
              newFrame.id = "header";
              newFrame.name = "header";
              newFrame.src="header.html"
              frag.appendChild(newFrame);
              newFrame = document.createElement("frame");
              newFrame.id = "main";
              newFrame.name = "main";
              newFrame.src="main.html"
              frag.appendChild(newFrame);
              document.getElementById("masterFrameset").rows = "50,*";

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

          ·表單( forms )
            1.訪問表單
              document.forms[0]
              document.forms["myForm"]
              document.myForm
              document.all.myForm
              document.getElementById("myForm")
              
              document.forms[0].elements[0]
              document.forms["myForm"].elements["myElement"]
              document.myForm.myElement

            2.讓文本框自動獲得焦點
              //讓名為myText的文本框在頁面加載時自動獲得焦點,并選中當前文本框的值
              <body onload="document.myForm.myText.focus(); document.myForm.myText.select();">

            3.通用的文本框驗證函數
              //驗證是否為空
              <input type="text" onchange="isEmpty(this)">
              
              function isEmpty(obj){
                  if(obj.value == null || obj.value == "") alert("此字段不能為空");
              }
              
              //驗證是否為數字
              <input type="text" onchange="isNumber(this)">
              
              function isNumber(obj){
                  var val = obj.value;
                  var r = /\w[0-9]{1,}/;
                  if( !r.test(val) ) alert("此字段必須為數字")
              }
              
              //驗證是否長度符合
              <input type="text" onchange="isLen7(this)">
              
              function isLen7(obj){
                  if(obj.value.length != 7) alert("此字段長度必須為7位");
              }
              
              //驗證有效E-Mail地址
              <input type="text" onchange="isEmail(this)">
              
              function isEmail(obj){
                  var val = obj.value;
                  var r = /^\w[0-9a-zA-Z.\-]{3,}@\w[0-9a-zA-Z.\-]{2,}.\w[a-zA-Z.]{2,4}$/;
                  if( !r.test(val) ) alert("請輸入有效的E-Mail地址");
              }

            4.阻止表單提交
              <form action="#" onsubmit="return checkValue()"></form>
              
              function checkValue(){
                  //do something to check the value.
                  return false;
              }

            5.改變表單提交的頁面
              <form action="#" onsubmit="chooseAction()"></form>
              
              fucntion chooseAction(){
                  if(document.myForm.myCheckBox.checked) document.myForm.action = "a.asp";
                  else document.myForm.action = "b.asp";
              }

            6.阻止向文本框輸入某些字符
              <input type="text" onkeydown="checkKeyCode(event)">
              
              fucntion checkKeyCode(evt){
                  evt = (evt) ? evt : event;
                  var c = (evt.charCode) ? evt.charCode : evt.keyCode;
                  if(c < 48 || c > 57){
                      alert("此字段只允許輸入數字");
                      return false;
                  }
                  else return true;
              }

            7.回車后焦點跳到另一個輸入控件
              <input id="txt1" type="text" onkeypress="return focusNext(this,'txt2',event)">
              <input id="txt2" type="text">
              
              function focusNext(form,name,evt){
                  evt = (evt) ? evt : event;
                  var c = (evt.charCode) ? evt.charCode : evt.keyCode;
                  if(c == 13 || c == 3){
                      form.elements[name].focus();
                      return false;
                  }
                  else return true;
              }

            8.使某一控件不可用
              document.myForm.myElement.disabled = true;

            9.隱藏/顯示某一控件
              document.myForm.myElement.style.display = "block";  //顯示
              document.myForm.myElement.style.display = "none";   //隱藏

            10.控制下拉框
              //清空下拉框中的項
              document.myForm.mySelect.options.length = 0;
              
              //添加下拉框中的項
              var item = new Option("myText","myValue");
              document.myForm.mySelect.add(item);
              
              //獲取下拉框當前選中的值
              var val = document.myForm.mySelect.value;

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

          ·事件( Event )
            1.事件介紹:
              onabort     //當用戶阻止發送圖片至客戶端時觸發
              onblur      //當控件失去焦點時觸發
              onchange    //當控件失去焦點并且內容發生了改變時觸發
              onclick     //當用戶點擊某控件時觸發
              ondblclick  //當用戶雙擊某控件時觸發
              onerror     //當執行某腳本發生異常時觸發
              onfocus     //當某控件獲得焦點時觸發
              onkeydown   //當用戶按下鍵盤某個鍵時觸發
              onkeypress  //當用戶按下并松開鍵盤某個鍵時觸發
              onkeyup     //當用戶松開鍵盤某個鍵時觸發
              onload      //用頁面被加載完成后觸發
              onmousedown //當用戶按下鼠標時觸發
              onmousemove //當用戶移動鼠標時觸發
              onmouseout  //當用戶將鼠標移出某控件時觸發
              onmouseover //當用戶將鼠標移入某控件時觸發
              onmouseup   //當用戶松開鼠標時觸發
              onmove      //當用戶移動瀏覽器窗口時觸發
              onreset     //當用戶點擊表單"重置"按鈕時觸發
              onresize    //當用戶改變瀏覽器窗口的大小時觸發
              onselect    //當用戶選中文本框內容時觸發
              onsubmit    //當用戶點擊表單"提交"按鈕時觸發
              onunload    //當用戶關閉瀏覽器時觸發
              
              //以下為IE獨有的方法
              onbeforecopy    //當用戶使用"復制"功能前觸發
              onbeforecut     //當用戶使用"剪切"功能前觸發
              onbeforepaste   //當用戶使用"粘貼"功能前觸發
              onbeforeprint   //當用戶使用"打印"功能前觸發
              oncontextmenu   //當用戶調出上下文菜單時觸發
              oncopy          //當用戶使用"復制"功能時觸發(未復制)
              oncut           //當用戶使用"剪切"功能時觸發(未剪切)
              ondrag          //當用戶拖動某控件前觸發
              ondragend       //當用戶拖動某控件后觸發
              ondragenter     //當用戶拖動某控件到當前控件上面后觸發
              ondragleave     //當用戶將某控件拖出當前控件時觸發
              ondragover      //當用戶將某控件拖出當前控件上面時觸發
              ondrop          //當用戶將某控件拖到當前控件后觸發
              
            2.瀏覽器事件兼容性
              function funName(evt){
                  evt = (evt) ? evt : event;
                  if(evt){ //to do something }
              }
              
            3.動態為控件添加事件
              document.getElementById("myControl").addEventListener("click",funName,false);
              document.getElementById("myControl").onclick = funName;
              
            4.頁面加載后調用某函數
              <body onload="funName(); funName2();">
              window.onload = funName;
              
            5.確定與點擊事件相匹配的事件
              //9.3和9.4 比較復雜.且不清楚事件是JS API還是自定義的
              
            6.防止重復執行兩次點擊事件
              //當第一次點擊按鈕后,將表單提交回服務器,然后submitForm()函數便指向blockIt()函數.
              //除非頁面重新加載..否則點擊無效(無作用)
              <input type="button" value="提交" onclick="submitForm()">
              function submitForm(){
                  document.forms["myForm"].submit();
                  submitForm = blockIt;
                  reutrn false;
              }
              function blockIt(){
                  return false;
              }
              
            7.阻止用戶點擊鼠標右鍵或中鍵
              function myFun(evt){
                  evt = (evt) ? evt : event;
                  if(evt.button || evt.button == 1 || evt.button == 2){ return false; }
                  else{ //do something }
              }
              
            8.阻止用戶鍵入某些字符
              function myFun(evt){
                  evt = (evt) ? evt : event;
                  var c = (evt.charCode) ? evt.charCode : evt.keyCode;
                  if(c < 48 || c > 57){ return false; }
                  else reutrn true;
              }

            9.獲取當前鼠標指向的對象
              function myFun(evt){
                  evt = (evt) ? evt : event;
                  var elem = (evt.target) ? evt.target : evt.srcElement;
                  //do something
              }
              
            10.特殊功能鍵
              evt.ctrlKey  evt.altKey  evt.shiftKey
              
            11.播放媒體文件
              <object id="hiPing" width="1" height="1" 
                  classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="#Version=6,0,0,0">
                  <param name="FileName" value="hi.wav">
                  <param name="AutoStart" value="false">
              </object>
              
              function playSound(id){
                  if(document.all[id].FileName){ document.all[id].Play(); }
              }

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

          ·頁面導航
            1.跳轉至另一個頁面
              location = "newPage.html";
              location.href = "newPage.html";

            2.不記錄歷史記錄的頁面跳轉
              location.replace("newPage.html");
              
            3.利用下拉框跳轉頁面
              <select name="chooser" id="chooser" onchange="redirect()">
                  <option value="">Choose a Destination:</option>
                  <option value="index.html">Home</option>
                  <option value="products.html">Products</option>
                  <option value="support.html">Support</option>
                  <option value="contact.html">Contact Us</option>
              </select>
              
              function redirect(){
                  var t = document.all.chooser.value;
                  if(t){ location = t; } 
              }
              
            4.利用Cookies保存用戶數據
              <body onunload="saveData()">    //要保存數據的頁面
              <body onload="readData()">      //新頁面
              
              function saveData(){
                  var data = document.forms[0].userName.value;
                  var expDate = getExpDate(180, 0, 0);
                  setCookie("userName", data, expDate); 
              }
              
              function readData( ) {
                  var data = getCookie("userName");
                  document.forms[0].userName.value = data; 
              }

            5.利用URL來保存用戶數據
              function goNext(url){
                  var data = document.forms[0].userName.value;
                  location.href = url + "?" + escape(data);
              }
              
              function readData( ) {
                  var srchString = unescape(location.search.substring(1, location.search.length));
                  if (srchString.length > 0){ document.forms[0].userName.value = srchString; }
              }

            6.創建一個自定義右鍵菜單
              //菜單就自己畫了,這里只說方法
              function initContextMenus(){
                  if (document.body.addEventListener){
                      document.body.addEventListener("contextmenu", showContextMenu, true);
                      document.body.addEventListener("click", hideContextMenus, true);
                  }
                  else {
                      document.body.oncontextmenu = showContextMenu;
                  }
                  setContextTitles( );
              }

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

          ·管理樣式 ( CSS )
            1.三種嵌入樣式表的方法:
              //在頭部統一聲明樣式
              <style type="text/css"> body{ font-size:9pt; } </style>
              
              //從外部嵌入一樣式表文件
              <link rel="stylesheet" type="text/css" href="myStyleSheet.css">
              
              //直接在元素屬性里定義
              <p style="font-size:9pt"></p>
              
            2.分配樣式規則給某一元素
              <style type="text/css">
                  <!-- tagName {styleProperty1:value1; styleProperty2:value2; ...} -->
              </style>
              
            3.自定義一種樣式供一類元素使用
              .myStyle { font-size:9pt; }
              <p class="myStyle"></p>
              
            4.自定義一種樣式供單一元素使用
              #myId { font-size:9pt; }
              <p id="myId"></p>
              
            5.頁面加載后動態修改頁面樣式表鏈接
              <link id="basicStyle" rel="stylesheet" type="text/css" href="styles.normal.css">
              document.getElementById("basicStyle").href = "newstyle.css";
              
            6.打開/關閉某個樣式表
              document.styleSheets[1].disabled = false;
              
            7.動態設置/更改某一元素的樣式
              document.getElementById("myElement").className = "myStyle";
              
            8.元素樣式的優先級
              //原則上來講,瀏覽器會使用最后的一種樣式(就近原則)
              //當同時給一元素設置id和class兩種樣式時,id的樣式優先于class
              //當同時給一元素設置class和style兩種樣式時,style優先于class
              //當同時給一元素設置style和id兩種樣式時,style優先于id
              <style>
                  .myStyle { font-size:10pt; }
                  #myId { font-size:11pt; }
              </style>
              <p id="myId" class="myStyle" style="font-size:12pt">123</p>

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

          ·動態更改對象的視覺效果
            1.更改對象的字體樣式
              document.getElementById("myElement").style.color = "#EEEEEE";
              
              //相應的屬性
              color : 字體的顏色
              font : 字體的全局設置
              fontf : 字體名稱
              fontSize : 字體大小(pt, px)
              fontStretch : 字符間隔(px)
              fontStyle : 字體的樣式(normal, italic)
              fontVariant : 字母大小常量(normal, small-caps)
              fontWeight : 字體粗細(bold, bolder, lighter, normal)
              textDecoration : 字體裝飾(blink, line-through, none, overline, underline)
              textTransform : 字母大小寫(capitalize, lowercase, none, uppercase)
              
            2.更改頁面背景樣式
              document.body.background = "url(bg.gif) repeat fixed";
              
              //相應的屬性
              background : 背景的全局設置
              backgroundAttachment : 背景是否隨滾動條滾動而滾動(fixed, scroll)
              backgroundColor : 背景顏色
              backgroundImage : 背景圖片
              backgroundPosition : 背景圖片的位置(bottom, center, left, right, top)
              backgroundRepeat : 背景圖片是否重復或拉伸(no-repeat, repeat, repeat-x, repeat-y)

            3.顯示/隱藏某對象
              document.getElementById("myElement").style.visibility = "hidden";
              document.getElementById("myElement").style.display = "none";
              
            4.細調對象的透明度
              document.getElementById("myElement").style.filter = "alpha(opacity=80)";

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

          ·布置HTML對象的位置
            1.動態更改對象的位置
              <div id="myDiv" style="position:absolute; left:100px; top:100px">Content Here</div>
              document.getElementById("myDiv").style.top = "200px";

            2.設置對象在頁面上的層次關系
              //值越大對象越前面
              document.getElementById("myElement").style.zIndex = 123;

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

          ·動態創建內容
            1.頁面加載時動態創建內容
              <p>現在是:<script>var d = new Date(); document.write(d.toLocaleTimeString());</script></p>
              
            2.動態重畫頁面
              <input type="text" id="txtName"><input type="button" value="確定" onclick="rewritePage()">
              <scritp>
              function rewritePage(){
                  var user = document.getElementById("txtName").value;
                  var html = "<html><head><title>歡迎</title></head>";
                  html += "<body>歡迎您!" + user + "</body></html>";
                  document.write(html);
                  document.close();
              }
              </script>
           

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 绥德县| 鹰潭市| 兰州市| 长春市| 衡阳市| 山阳县| 藁城市| 阿瓦提县| 寿光市| 绥宁县| 青岛市| 沁阳市| 睢宁县| 时尚| 上思县| 云霄县| 赣州市| 阿巴嘎旗| 皋兰县| 英山县| 越西县| 阿尔山市| 长武县| 依兰县| 安宁市| 涞源县| 金门县| 田东县| 萨迦县| 康定县| 白水县| 亚东县| 凤庆县| 合山市| 京山县| 阿鲁科尔沁旗| 自贡市| 泰宁县| 嘉兴市| 香港| 宁武县|