1. 程式人生 > >web基礎-JavaScript

web基礎-JavaScript

結構 新的 web 適合 固定 boolean 最重要的 顯式 數據類型的轉換

                                              JavaScript
  JS為網頁添加功能:
    1、頁面的動態效果:輸入的驗證、頁面元素的動態顯示等
     JavaScript寫在html頁面上,由瀏覽器來運行
    2、服務器的交互:數據的交換--jsp、ajax
     jquery--封裝好js方法
一、概述
  1、什麽是Javascript?
      網頁編程技術,用來向HTML頁面添加交互行為
      JS是一種基於對象和事件驅動的解釋性腳本語言,具有與java和C語言相類似的語法
      特點:直接嵌入HTML頁面;由瀏覽器解釋執行代碼,不進行預編譯
      功能:用於客戶端數據的計算
         客戶端表單的合法驗證
         瀏覽器事件的觸發
         網頁特殊顯示效果制作
  2、發展史


      JavaScript正是名稱是ECMAScript,此標準由ECMA組織發展和維護
      ECMA-262是正式的JavaScript
      此標準基於JavaScript(Netscape)和JScript(Microsoft)
      -網景公司在Netscape2.0首先推出了JavaScript
      -微軟公司在IE3.0開始提供對客戶端JavaScript的支持,並取名為JScript
二、基礎語法
  1、寫法:
    <1>在元素內部和事件綁定在一起<input type="button" value="按鈕" onclick="alert(‘hello java‘)">
    <2>在head標簽中封裝在<script language="javascript"><script>中,加語言是告知瀏覽器 如果不寫則使用瀏覽器默認設置的方式
    <3>封裝在JS文件中 調用時<script language="javascript" src="MyScript.js"><script> 註:W3C推薦使用type=text/javascrpt
  2、錯誤查看方式:
FireFox錯誤控制臺
    註意:單行註釋//多行註釋/* */;語句由表達式、關鍵字、運算符組成;大小寫敏感;分號結束
  3、變量
    <1>變量的聲明:var x=0;var y="hello";var z="true" 變量在聲明時不確定數據類型,賦值時確定數據類型 js是一種弱類型的編程語言
  4、數據類型
    <1>基本類型:number/String/Boolean
          String:由Unnicode字符、數字、標點組成的序列
          由單引號或雙引號括起--兩種都可以使用,但如果外層是雙引號,內層就用單引號因為便於區分
          特殊字符需要轉義符\,如\n,\\,\‘,\"
          怎麽表示漢字的範圍只能是中文則必須用Unicode:[\u4e00-\u9fa5]
          Number:不區分整型和浮點型數值
          所有的數字都采用64位浮點格式存儲,類似於double格式
        a、整型

            10進制的整數由數字的序列組成
            16進制數據前面加上0X,八進制前面加0
        b、浮點型
            使用小數點記錄數據:3.4
            使用科學計數法記錄數據:4.3e23
        C、boolean:多用於控制語句
      數據類型的轉換:
          隱式轉換:直接轉--默認規則
          規則:Number+String=String
             Number+Boolan=String true變1 false變2 運算
             Boolean+String=String true/false轉變為字符串類型的true/false
             Boolean+Boolean=Number 值為數字0/1
          顯式轉換:利用轉換的函數方法--當有確定的計算要求
          規則:a、toString
             b、parseInt()
             c、parseFloat()
               默認從控制臺輸入的數據類型為字符串類型
             d、isNaN()--判斷是不是一個數字 很常用
          typeof:判斷數據的類型
    <2>特殊類型:Null--空/Undefine--未定義
    <3>復雜類型
  5、運算符:算術、邏輯、關系...
    <1>關系運算符 註意===嚴格相等和==的區別
            ===是指值和類型都相等
  6、流程控制:
三、常用內置對象
   什麽是js對象?
        js是一種基於對象的語言
        對象是js中最重要的元素
        js中包含多種對象:內置對象、自定義對象、瀏覽器對象、HTML DOM對象、Active對象
  1、簡單數據對象
      String:
        <1>創建字符串對象:var str1="hello world";var str2=new String("hello world");
        <2>String對象的屬性:length alert(str1.length);
        <3>String對象的方法:
            toLowerCase()/toUpperCase() 大小寫轉換
            indexOf()/lastIndexOf() 找某個子字符的位置--從前往後找/找某個字符的位置--從後往前找
            subString(star,end) 截取字符串,不含end本身位置
            charAt(index) 返回指定下標的字符串
            charCodeAt(index) 返回字符串unicode編碼
            replace(原字符,新字符) 只能替換一次
            split() 拆分字符串 返回一個數組
             操作:模擬過濾敏感字符

            function replaceString(){
                  //先獲取字符串
            var str1=document.getElementById("txtString").value    
            var index=str1.indexOf("js");//設置初始值
            while(index>-1){//如果有敏感字符
                str1=str1.replace("js","*");//找到了將敏感字符替換掉
                index=str1.indexOf("js");//在新的字符串中繼續找是否存在有敏感字符js,相當於叠代操作    
              }
            document.getElementById("txtString").value=str1    
            }


            過濾敏感字符的方法:<input type="text" onblur="replaceString()" id="txtString" />
       Number:基本類型數據的包裝對象
            方法:toString():數值轉換為字符串
            tofixed():數值轉換為字符串,參數為指定保留的小數位數,四舍五入,不滿足保留位數,補0
            如var data=53.2-->data.toFixed(2)-->53.20 常用於小數的格式化
       Boolean:
  2、組合對象
      Array:1列多個數據 js中沒有集合只有數組 不需要聲明初始長度直接用
        <1>寫法:
          方式一 ar arr=new Array();//先聲明 未初始化
          arr[0]="marry" arr[1]=true
          方式二 var arr=new Array("mary",10,true)聲明+初始化
          方式三 var arr=["mary",10,true] 簡寫 省略new Array
          <2>屬性:length獲取元素個數/數組長度
        <3>數組方法:
          arr.toString()---用於遍歷數組,輸出數組 如10,20,21..默認是用逗號隔開的 註意是無參的
          arr.join("*") ---指定分割符*輸出數組10*20*30
          arr.concat(value1,value2,...) 拼接數組 在原數組後面連接 得到新數組 原數組值不發生改變
          arr.slice(start,end)--獲取子數組/截取數組 不含end位置的數組
          arr.reverse()--數組的反轉
          arr.sort()--排序 默認是按字符順序排序
            如果要實現按數值排序則要自定義個方法:
              function arrayFunc(a,b){
                return a-b;
               }
          array.sort(arrayFunc)將方法對象當做參數傳入
      Math:數學計算相關的--不用創建對象 直接使用 類似於靜態對象
        <1>常用屬性:都是數學常數
              Math.E--自然數
              Math.PI--圓周率
              Math.LN2(in2)
              Math.LN10(in10)...
        <2>方法(了解)
              三角函數 Math.sin(x) Math.cos(x)...
              反三角函數 Math.asin(x) Math.acos(x)..
              計算函數 Math.sqrt(x) Math.log(x)..
              數值比較函數 Math.abs(x) Math.max(x,yxz..)...
              註意其中的:Math.random()--0<=Math.random()<1 小數
              Math.floor()--返回一個小於或等於指定數字的整數,也就是說往下取
              Math.ceil()--正好相反 往上取整
              案列:求3-9之間的隨機整數 var s=(Math.random())*6+3--> Math.floor(s)
              可以應用在網頁上某也圖片的隨機出現的位置,坐標生成隨機數
      Date:對象
        <1>創建對象:
              var d=new Date();//當前日期和時間
              var d=new Date(2013/01/01 12:12:12);//固定日期和時間
        <2>方 法:
            分類:getxxx
                 getDay/getDate/getMonth/getFullYear...
               setxxx
                 setDay/setDate...
               toxxx--得到字符串格式的表示方法 常用於頁面顯示
                  toString
  3、高級對象:
      Function:函數(方法)是一組可以隨時隨地的運行的語句 function對象可以表示開發者的任何函數 函數實際上是功能完整的對象
      定義:略
      調用:
      Arguments對象:
        a、js中沒有傳統意義上的重載(方法名相同,參數列表不同),如果方法名稱相同,則以最後一次定義為標準
        b、js如果要實現類似重載的效果使用關鍵字arguments 代表當前被傳入的參數,組成了一個數組
            function m(){alert(arguments[0])}
  

    //方法的重載:
        function testMethod(){
        if(arguments.length==1){
        var data=arguments[0];
          alert(data*data);
          }
        else if(arguments.length==2){
          alert(arguments[0]+arguments[1]);
        }
      }


        創建方法:
          方式一:function關鍵字function s(參數){方法體}--推薦
            用於跟功能相關的方法
          方式二: var f =new Function("a","b","alert(a+b);");--不推薦使用
            最後一個參數是方法體,前面的其他參數是是方法的參數
          存在的需求:有些方法不需要顯式存在,只是為其他方法單獨使用
 

       function arraySort(){
          var array=[12,34,56,11,7];
          var f=new Function("a","b","return a-b;")//專門用於按數值排序所用
              array.sort(f);
              alert(array.toString());
        }


         

        //方式三:

        var f =new Function(a,b){         return a-b;//使用匿名函數           }


        全局函數:所有的JS對象都可以使用
           parseInt/parseFloat/isNaN...
           encodeURI():把字符串作為URI進行編碼
           decodeURI():對encodeURI()函數編碼過的URI進行解碼
           eval:計算 var s1="1+3*5";var r =eval(s1);alert(r);//16
              計算某個字符串,以得到結果;或者執行其中的js代碼

      RegExp:純文本的表達式,表示某種匹配模式 在不同的語言環境下,執行後者使用正則表達式,實現文本的各種處理
            eplace(原字符,新字符);
            match()--得到匹配的結果 用數組存
            search()--得到匹配的下標 可以判斷是否有敏感字符
            匹配模式:g--global 全局
            m--multilin 多行
            i--ignorance 忽略大小寫
          實際應用:str1=str1.replace(/js/gi,"*") //全局替換 忽略大小寫
             str1=str1.replace(/\d/g,"*") //\d表示一個數字如果表示1個或多個數字則用/\d+/
          正則表達式的應用分為兩類:
            一類:和String對象的三個方法結合使用,實現對String的操作

            二類:正則表達式對象
                var r =/\d{6}/ --6位小數
                var s=/^[a-z]{3,5}$/ 意思是a-z 3-5位 從開始到結束進行匹配
                  r.test(String)--true/false 意思是指定範圍是否與錄入的數據匹配 --特別適合輸入驗證
                  驗證漢字:/^[\u4e00-\u9fa5]{3}$/ 3個漢字

四、應用(重要)
   DHML--動態效果 比如瀏覽器瀏覽信息、屏幕信息等
   將整個窗口均實現對象化,結構如下:  
              window 父對象
              document---html
              screen
              history
              location
              event
              navigator
  1、window對象:
      <1>打開對話框窗口alert();是一種阻塞線程的方法 window.alert("你好");
          window.confirm("請確認")--確認詢問窗口 信息提示框--返回boolean
          了解window.prompt("請輸入:")--彈出一個輸入的文本框 很少使用 無法對文本框的樣式修改、控制
      <2>打開新窗口: 一個參數 window.open(url);--window.open("http://www.baidu.com");重復打開
          兩個參數 window.open(url,"windowName")給窗口取了名字 再次點擊就不會重復打開了
          三個參數 window.open(url,"windowName",conf)最後一個參數為瀏覽器外觀設置 如寬高等...


web基礎-JavaScript