Js基本用法,JQuery

JavaScript是一種弱類型,直譯式腳本語言,主要用于向HTML頁面添加動態交互行為,它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,Js支持跨平臺使用。

JavaScript組成
1.ECMAScript(核心)
規定了該語言的語法和基本對象

2.DOM(文檔對象模型)
包含整個Html頁面的內容,規定處理網頁內容的方法和接口。

3.BOM(瀏覽器對象模型)
包含整個瀏覽器相關的內容,規定與瀏覽器交互的方法和接口。
應用場景
1.讀寫HTML元素
2.控制Cookies,包括創建和修改等
3.對瀏覽器事件做出響應
4.檢測訪客的瀏覽器信息,對瀏覽器事件做出響應
5.基于Node.js技術進行服務器端編程

Js基本使用

1.Js引入
可以在<html>標簽中,任何地方添加<script></script>標簽,標簽中內容就是js代碼。
雖然可以放在頁面的任何地方,但是規范放在<head>標簽中。

<html>
  <head>
    <title>Demo</title>

     1.直接引入
     <script type="text/javascript">
        alert("Demo")
     </script>

     2.單獨使用一個文件來編寫javascript代碼,在需要使用的頁面中引入該文件 
     <script src="demo.js" type="text/javascript"/>
  </head>

  <body>
     3.把代碼編寫放置在a標簽的href屬性中,點擊a標簽的時候,就執行里面代碼
     <a href="javascript:alert('測試')">點擊</a>
  </body>
</html>
2.Js基本語法
1.變量和常常量
Js區分大小寫,弱類型。
每行結尾的分號可有可無,但是建議都寫。
1.變量聲明的關鍵字:var
var userName;
Js定義變量無需指定類型,任何類型都使用var聲明,var類似java中的Object類型。

變量打印
alert(內容);
console.debug(內容)


2.Js的基本數據類型和常量
整型常量:10進制,8進制,16進制
實型常量:12.32,5E7,4e5
Boolean:true,false

String字符串
注意:Js沒用char類型,所以'a'也是一個字符串
字符串中的特殊字符,需要以反斜杠(\)后跟一個普通字符來表示。

null:表示引用任何的內容空間
undefined:未定義,定義未賦值
3.Js運算符和Java相同

注意
= :賦值
== :用來比較變量或常量的內容,不管數據類型
===:比較數據類型和內容,若數據類型相同,且內容相同返回true
2.函數定義
4.函數定義
函數調用時才會執行,將腳本編寫為函數,就可以避免頁面載入時執行該腳本。

1.定義函數
<script type="text/javascript">
    function demo(){
        console.debug("打印到控制臺");
    }

    demo(); //調用
</script>


2.帶參數和返回值
<script type="text/javascript">
    function demo(a, b) {
        return a + b;
    }

    var res = demo(1, 1);
    console.debug(res);
</script>


3.匿名函數
在定義函數的時候,沒有定義函數名稱
此時,可以把函數當作是一個變量賦值
<script type="text/javascript">
    var res = function (a, b) {
        return a + b;
    }

    console.debug(res(1,1));
</script>
3.Js構建類
js創建一個類,只需要定義類的構造方法

this關鍵字
1.在構造方法中:this指新創建的對象
2.在方法中:誰調用this所在的方法,this就是誰
 <head>
    <title>Demo</title>

     <script type="text/javascript">
         function User() {
            this.name;
            this.age;
            this.info = function () {
                console.debug(this.name+":"+this.age);
            }
         }

         var user = new User();
         user.name = "演示";
         user.age = 18;
         user.info();
     </script>
  </head>
4.for in
作用
1.遍歷數組里所有的數組元素的索引
2.遍歷Js對象的所有屬性
<head>
    <title>Demo</title>

     <script type="text/javascript">
         function User() {
            this.name = "演示";
            this.age = 18;
            this.info = function () {
                printf(this.name+":"+this.age);
            }
         }

         function printf(p) {
             console.debug(p);
         }

         var user = new User();
         for (var item in user){
             printf("打印屬性名:"+ item);
             printf("打印屬性值:"+ user[item])
         }
     </script>
  </head>

補充
eval():將參數字符串作為一個JavaScript表達式執行。
效果
5.數組
Js中的數組類似于Java中的ArrayList

聲明
var arr = [ "數據1", "數據2" ];

/*
 * arr.splice(start, deletecount, items)
 * 從哪個索引開始操作
 * 操作元素的個數
 * 要改變的元素結果
*/

<head>
    <title>Demo</title>

     <script type="text/javascript">
         var arr = ["data1","data2"];
         arr.splice(1,1); //刪除元素
         arr.splice(1,2,"添加元素");
         arr.splice(0,1,"修改元素");

        for(var item in arr){
            console.debug(arr[item])
        }
     </script>
  </head>
方法 作用
arr.length 獲取數組長度
arr.unshift(values); 在前面追加元素
arr.pop(); 刪除最有一個元素
arr.shift(); 移除第一個元素
arr.sort(funct); 數組排序
arr.reverse(); 顛倒數據中的元素順序
arr.join(seperator) 數組轉換成字符串
arr.splice(start, deletecount, items) 截取字符串
6.Js原型
原型即得到對象的時,已經有自定義的方法

關鍵字prototype
Array.prototype.setFunc = function(){
    console.debug("");
}

var arr = [];
//調用
arr.setFunc();

BOM,DOM

1.BOM(瀏覽器對象模型)

瀏覽器對象模型,包含整個瀏覽器相關的內容


瀏覽器對象模型
Window
setTimeout(code,time):指定多少秒后執行
setInterval(code,time):指定每隔多少秒執行一次

clearTimeout(code):清除定時器
clearInterval():清除定時器

彈窗:confirm("確認刪除");
2.DOM(文檔對象模型)
Document

每個載入瀏覽器的HTML文檔,都會成為Document對象,通過Document對象,可以訪問HTML頁面中所有的元素。

事件
    onsubmit="寫在form標簽中,必須有返回值" 
    onload="此事件只能寫一次并且放到body標簽中" 
    onfocus="獲取焦點" 
    onblur="失去焦點" 
    onmouseover="鼠標經過" 
    onmouseout="鼠標離開"
    
獲取元素
    document.getElementById("id")

獲取元素里面的值
    document.getElementById("id").value

向頁面輸出
    彈窗:alert();
    向瀏覽器中寫入內容:document.write(內容);
    向頁面指定位置寫入內容:innerHTML 
document.forms:獲取HTML中所有表單元素
document.forms[0]:通過索引指定獲取HTML中指定的表單
document.links:獲取HTML中所有鏈接對象

document.writeln("向頁面輸出數據");

根據Id or Name獲取操作的元素
document.getElementById("user")
document.getElementsByName("user")

<!DOCTYPE html>
<html>
  <head>
    <title>Demo</title>

     <script type="text/javascript">

         //當文檔加載完后,執行
         window.onload = function (){
             console.debug(document.forms[0]);
             console.debug(document.forms);
             console.debug(document.links)

         }

         function getContent() {
             var userName = document.getElementById("user").value;
             console.debug("獲取內容:" + userName);
         }
     </script>
  </head>

  <body>
     <form action="#" method="get">
         <input type="text" id="user" name="name" placeholder="用戶名" >
         <input type="button" onclick="getContent()" value="獲取">
     </form>
  </body>
</html>
案例
1.前臺校驗
當用戶輸入的數據不符合要求時,不提交表單。

思路
通過onsubmit()事件,控制表單提交。
onsubmit() 需要在定義函數的時候給出一個返回值。
return false時表單不能提交。


<!DOCTYPE html>
<html>
  <head>
    <title>Demo</title>

     <script type="text/javascript">

         function checkInfo() {
             var userName = document.getElementById("user").value;
             if(userName != "demo"){
                 alert("請輸入demo");
                 return false;
             }
         }
     </script>
  </head>

  <body>
     <form action="#" method="get" onsubmit="checkInfo()">
         <input type="text" id="user" name="name" placeholder="用戶名">
         <input type="submit" value="提交">
     </form>
  </body>
</html>
2.替換圖片/輪播
當網頁加載完成時,圖片開始輪播
頁面加載完成事件onload(),此事件只能寫一次并且放到body標簽中

思路
1.輪播的圖片前綴名稱相同,僅標識的數字不同
img1,img2...

2.開啟定時器,不斷調用圖片切換方法
window.setInterval(code,time)
參數:開啟函數,切換時間,setInterval有返回值,用于清除定時器。

<html>
  <head>
    <title>Demo</title>

     <script type="text/javascript">
         var i = 1;
         function toggleImg() {
             i++;
             if(i == 4){
                 i = 1;
             }
             document.getElementById("img").src="img/img"+ i +".jpg";
         }

         //頁面加載后調用
         function init() {
             //定時器
             var code = window.setInterval("toggleImg()",2000);
             // window.clearInterval(code);
         }
     </script>
  </head>

  <body onload="init()">
    <img id="img" src="img/img1.jpg">
    <br/>
    <input type="button" onclick="toggleImg()" value="下一張">
  </body>
</html>

Json(JavaScript Object Notation)

JSON是JavaScript原生格式,是一種簡單的數據格式,比XML更輕巧,易于閱讀和編寫,也易于機器解析和生成。

JSON規則
一個對象以"( { "開始,以" }) "結束,()可以省略不寫。
對象是一個無序的 " 名稱:值 " 集合。
多個" 名稱:值 " 之間用" , "分隔。

并列數據的集合,用("[]")表示。
[
    {名稱1:值1,名稱2:值2}
    
    {名稱1:值1,名稱2:值2}
]

元素值可具有的類型:string,number,object,array,true,false,null
 <head>
    <title>Demo</title>

     <script type="text/javascript">

         var user = [
             {
                 name:"user1",
                 age:18,
                 hobby:["Java","Android"],
                 data:{
                     other:"Other"
                 }
             },
             {
                 name:"user2",
                 age:18,
                 hobby:["Web","C"],
                 data:{
                     other:"Other"
                 }
             }
         ]

         console.debug(user[0].hobby[1])
         console.debug(user[1].data.other)
     </script>
  </head>
補充
字符串轉換為Json
<script type="text/javascript">

         var str = "({name:'demo',age:18})"
         var user = eval(str);
         console.debug(user);
</script>

JQuery

JQuery封裝了Js常用的功能代碼,JQuery的加載比Js的加載要快,是一個快速、簡潔的Js框架。

IDEA引入JQuery
在線引入
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
IDEA補全JQuery
基本語法
JQuery 的入口函數是在 html 所有標簽都加載之后,就會去執行。 
Js的 window.onload 事件是等到所有內容,包括外部圖片之類的文件加載完后,才會執行。

<!DOCTYPE html>
<html>
  <head>
    <title>Demo</title>

      <script src="https://code.jquery.com/jquery-3.1.1.min.js"
              type="text/javascript">
      </script>

      <script>
          $(function () {
              //相當于document.getElementById("btn")
              $("#btn").click(function () {
                  alert("demo")
              })
          })
      </script>
  </head>

  <body>
    <input id="btn" type="button" value="Demo">
  </body>
</html>
JQuery使用教程
Ajax

Ajax可以使網頁實現異步更新,是一種在無需重新加載整個網頁的情況下,更新部分網頁的技術。

Ajax的基本使用
Ajax使用JQuery的方式
1.Post方式
$.post(url, [data], [callback], [type])
url:請求路徑,可以用${pageContext.request.contextPath}獲取根路徑
data:請求參數 
callback:回調函數 
type:返回內容格式,默認的是text,xml,html,script,json。


2.Get方式
$.get(url, [data], [callback], [type]);
3.$.ajax(url,[settings])
url:請求路徑。 
settings:AJAX 請求設置,所有選項都是可選的。

<script type="text/javascript">
    function demo(){
        $.ajax({
                url:"/demo", //url地址
                async:true,  //是否異步
                type:"POST", //請求方式
                data:{"name":"張三","age":25},//請求參數
                
                success:function(data){ //響應成功后的回調
                    alert(data.name);
                },
                error:function(){  //響應失敗后的回調
                    alert("請求失敗");
                },
                dataType:"json" //返回數據的類型,確定是Json還是文本(text)
        });
    }
</script>
案例

檢驗用戶名是否存在

<!DOCTYPE html>
<html>
  <head>
    <title>Demo</title>

      <script src="https://code.jquery.com/jquery-3.1.1.min.js"
              type="text/javascript">
      </script>

      <script>
          function checkUserName() {
              $.get(
                  "/a",
                  {username: $("#username").val()},
                  function (data) {
                      $("#label").html(data);
                  },
                  "text"
              );
          }
      </script>

  </head>

  <body>
    <input id="username" type="text" name="username"
           placeholder="用戶名">
    <input type="button" value="提交" onclick="checkUserName()">
    <br/>
    <label id="label"></label>

  </body>
</html>
public class UserBean {

    private String userName;

    public UserBean() {
    }

    public UserBean(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}


public class AServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        // 獲取用戶名參數
        String username = req.getParameter("username");

        // 模擬查詢用戶
        UserBean user = new UserBean("demo");
        if (!user.getUserName().equals(username)) {
            resp.getWriter().write("用戶名可用");
        } else {
            resp.getWriter().write("用戶名不可用");
        }
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容