zoukankan      html  css  js  c++  java
  • javascript笔记

    警告

    请使用 document.write() 只向文档输出写内容。

    假设在文档已完毕载入后运行 document.write,整个 HTML 页面将被覆盖:

    实例

    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>My First Web Page</h1>
    
    <p>My First Paragraph.</p>
    
    <button onclick="myFunction()">点击这里</button>
    
    <script>
    function myFunction()
    {
    document.write("糟糕!文档消失了。");
    }
    </script>
    
    </body>
    </html>
    

    亲自试一试

    #当你须要在某个页面同一时候运行两个变化处时使用{}

    JavaScript 代码块

    JavaScript 语句通过代码块的形式进行组合。

    块由左花括号開始。由右花括号结束。

    块的作用是使语句序列一起运行。

    JavaScript 函数是将语句组合在块中的典型样例。

    以下的样例将执行可操作两个 HTML 元素的函数:

    实例

    function myFunction()
    {
    document.getElementById("demo").innerHTML="Hello World";
    document.getElementById("myDIV").innerHTML="How are you?";
    }
    

    亲自试一试


    JavaScript 对大写和小写敏感。

    JavaScript 对大写和小写是敏感的。

    当编写 JavaScript 语句时,请留意是否关闭大写和小写切换键。

    函数 getElementById 与 getElementbyID 是不同的。

    相同。变量 myVariable 与 MyVariable 也是不同的。

    空格

    JavaScript 会忽略多余的空格。您能够向脚本加入空格。来提高其可读性。

    以下的两行代码是等效的:

    var name="Hello";
    var name = "Hello";
    
    提示JavaScript 是脚本语言。浏览器会在读代替码时,逐行地运行脚本代码。而对于传统编程来说,会在运行前对全部代码进行编译。

    JavaScript 变量

    与代数一样,JavaScript 变量可用于存放值(比方 x=2)和表达式(比方 z=x+y)。

    变量能够使用短名称(比方 x 和 y),也能够使用描写叙述性更好的名称(比方 age, sum, totalvolume)。

    • 变量必须以字母开头
    • 变量也能以 $ 和 _ 符号开头(只是我们不推荐这么做)
    • 变量名称对大写和小写敏感(y 和 Y 是不同的变量)

    提示:JavaScript 语句和 JavaScript 变量都对大写和小写敏感。


    JavaScript 数据类型

    JavaScript 变量还能保存其它数据类型,比方文本值 (name="Bill Gates")。

    在 JavaScript 中,类似 "Bill Gates" 这样一条文本被称为字符串。

    JavaScript 变量有非常多种类型,可是如今。我们仅仅关注数字和字符串。

    当您向变量分配文本值时,应该用双引號或单引號包围这个值。

    当您向变量赋的值是数值时,不要使用引號。

    假设您用引號包围数值,该值会被作为文本来处理。


    我们使用 var 关键词来声明变量:

    var carname;
    提示一个好的编程习惯是,在代码開始处,统一对须要的变量进行声明。

    JavaScript 函数和事件

    上面样例中的 JavaScript 语句,会在页面载入时运行。

    通常,我们须要在某个事件发生时运行代码,比方当用户点击button时。

    假设我们把 JavaScript 代码放入函数中,就能够在事件发生时调用该函数。

    您将在稍后的章节学到很多其它有关 JavaScript 函数和事件的知识。

    通常的做法是把函数放入 <head> 部分中,或者放在页面底部。这样就能够把它们安置到同一处位置。不会干扰页面的内容。

    提示在面向对象的语言中,属性和方法常被称为对象的成员。

    提示在面向对象的语言中,使用 camel-case 标记法的函数是非经常见的。您会经常看到 someMethod() 这种函数名。而不是 some_method()。

    函数是由事件驱动的或者当它被调用时运行的可反复使用的代码块。

    调用带參数的函数

    在调用函数时。您能够向其传递值。这些值被称为參数。

    这些參数能够在函数中使用。

    您能够发送随意多的參数,由逗号 (,) 分隔:

    myFunction(argument1,argument2)

    当您声明函数时。请把參数作为变量来声明:

    function myFunction(var1,var2)
    {
    这里是要运行的代码
    }
    

    变量和參数必须以一致的顺序出现。第一个变量就是第一个被传递的參数的给定的值,以此类推。

    实例

    <button onclick="myFunction('Bill Gates','CEO')">点击这里</button>
    
    <script>
    function myFunction(name,job)
    {
    alert("Welcome " + name + ", the " + job);
    }
    </script>
    

    亲自试一试

    上面的函数会当button被点击时提示 "Welcome Bill Gates, the CEO"。

    函数非常灵活,您能够使用不同的參数来调用该函数,这样就会给出不同的消息:

    实例

    <button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
    <button onclick="myFunction('Bob','Builder')">点击这里</button>
    

    亲自试一试

    ?

    ???

    ?依据您点击的不同的button,上面的样例会提示 "Welcome Harry Potter, the Wizard" 或 "Welcome Bob, the Builder"。

    在您只希望退出函数时 ,也可使用 return 语句。返回值是可选的:

    function myFunction(a,b)
    {
    if (a>b)
      {
      return;
      }
    x=a+b
    }
    

    假设 a 大于 b。则上面的代码将退出函数,并不会计算 a 和 b 的总和。

    局部 JavaScript 变量

    在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以仅仅能在函数内部訪问它。(该变量的作用域是局部的)。

    您能够在不同的函数中使用名称同样的局部变量,由于仅仅有声明过该变量的函数才干识别出该变量。

    仅仅要函数执行完成,本地变量就会被删除。

    全局 JavaScript 变量

    在函数外声明的变量是全局变量,网页上的全部脚本和函数都能訪问它。

    JavaScript 变量的生存期

    JavaScript 变量的生命期从它们被声明的时间開始。

    局部变量会在函数执行以后被删除。

    全局变量会在页面关闭后被删除。

    向未声明的 JavaScript 变量来分配值

    假设您把值赋给尚未声明的变量,该变量将被自己主动作为全局变量声明。

    这条语句:

    carname="Volvo";

    将声明一个全局变量 carname,即使它在函数内运行。

    JavaScript 运算符

    条件运算符

    JavaScript 还包括了基于某些条件对变量进行赋值的条件运算符。

    语法

    variablename=(condition)?value1:value2 

    样例

    greeting=(visitor=="PRES")?

    "Dear President ":"Dear ";

    假设变量 visitor 中的值是 "PRES"。则向变量 greeting 赋值 "Dear President ",否则赋值 "Dear"。

    条件语句用于基于不同的条件来运行不同的动作。

    条件语句

    通常在写代码时,您总是须要为不同的决定来运行不同的动作。您能够在代码中使用条件语句来完毕该任务。

    在 JavaScript 中。我们可使用下面条件语句:

    • if 语句 - 仅仅有当指定条件为 true 时,使用该语句来运行代码
    • if...else 语句 - 当条件为 true 时运行代码,当条件为 false 时运行其它代码
    • if...else if....else 语句 - 使用该语句来选择多个代码块之中的一个来运行
    • switch 语句 - 使用该语句来选择多个代码块之中的一个来运行

    switch 语句用于基于不同的条件来运行不同的动作。

    JavaScript Switch 语句

    请使用 switch 语句来选择要运行的多个代码块之中的一个。

    语法

    switch(n)
    {
    case 1:
      运行代码块 1
      break;
    case 2:
      运行代码块 2
      break;
    default:
      n 与 case 1 和 case 2 不同一时候运行的代码
    }
    

    工作原理:首先设置表达式 n(一般是一个变量)。随后表达式的值会与结构中的每一个 case 的值做比較。假设存在匹配,则与该 case 关联的代码块会被运行。

    请使用 break 来阻止代码自己主动地向下一个 case 执行。

    <html>
    <head>
    </head>
    <body>
    <button type="button" onclick="myFunction()">点击这里</button>
    <p id="demo"></p>
    <script>
    function myFunction()
    {
    var x;
    var day=new Date().getDay();
    switch (day)
    {
      case 0:
      x= "Today it's Sunday";
      break;
      case 1:
      x="Today it's Monday";
      break;
      case 2:
      x="Today it's Tuesday";
      break;
      case 3:
      x="Today it's Wednesday";
      break;
      case 4:
      x="Today it's Thursday";
      break;
      case 5:
      x="Today it's Friday";
      break;
      case 6:
      x="Today it's Saturday";
      break;
    }
    
    document.getElementById("demo").innerHTML=x;
    }
    </script>
    </body>
    </html>

    JavaScript For 循环

    循环能够将代码块运行指定的次数。

    JavaScript 循环

    假设您希望一遍又一遍地执行同样的代码,而且每次的值都不同,那么使用循环是非常方便的。

    我们能够这样输出数组的值:

    document.write(cars[0] + "<br>");
    document.write(cars[1] + "<br>");
    document.write(cars[2] + "<br>");
    document.write(cars[3] + "<br>");
    document.write(cars[4] + "<br>");
    document.write(cars[5] + "<br>");
    

    只是通常我们这样写:

    for (var i=0;i<cars.length;i++)
    {
    document.write(cars[i] + "<br>");
    }
    

    亲自试一试

    不同类型的循环

    JavaScript 支持不同类型的循环:

    • for - 循环代码块一定的次数
    • for/in - 循环遍历对象的属性
    • while - 当指定的条件为 true 时循环指定的代码块
    • do/while - 相同当指定的条件为 true 时循环指定的代码块

    JavaScript 错误 - Throw、Try 和 Catch

    try 语句測试代码块的错误。

    catch 语句处理错误。

    throw 语句创建自己定义错误。

    JavaScript 測试和捕捉

    try 语句同意我们定义在运行时进行错误測试的代码块。

    catch 语句同意我们定义当 try 代码块错误发生时,所运行的代码块。

    JavaScript 语句 trycatch 是成对出现的。

    语法

    try
      {
      //在这里执行代码
      }
    catch(err)
      {
      //在这里处理错误
      }
    

    实例

    在以下的样例中,我们有益在 try 块的代码中写了一个错字。

    catch 块会捕捉到 try 块中的错误,并运行代码来处理它。

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    var txt="";
    function message()
    {
    try
      {
      adddlert("Welcome guest!");
      }
    catch(err)
      {
      txt="There was an error on this page.
    
    ";
      txt+="Error description: " + err.message + "
    
    ";
      txt+="Click OK to continue.
    
    ";
      alert(txt);
      }
    }
    </script>
    </head>
    
    <body>
    <input type="button" value="View message" onclick="message()">
    </body>
    
    </html>
    

    Throw 语句

    throw 语句同意我们创建自己定义错误。

    正确的技术术语是:创建或抛出异常(exception)。

    假设把 throw 与 try 和 catch 一起使用,那么您可以控制程序流。并生成自己定义的错误消息。

    语法

    throw exception

    异常能够是 JavaScript 字符串、数字、逻辑值或对象。

    实例

    本例检測输入变量的值。

    假设值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自己定义的错误消息:

    <html>
    <head>
    </head>
    <body>
    <script>
    function myFunction()
    {
    try
      {
       var x=document.getElementById("demo").value;
       if(x=="") throw "empty";
       if(isNaN(x)) throw "not a number";
       if(x>10)    throw "too high";
       if(x<5)     throw "too low";
       }
    catch(err)
       {
        var y=document.getElementById("mess");
        y.innerHTML="Error: " + err + "." ;
       }
    }
    </script>
    <h1>My First JavaScript</h1>
    <p>Please input a number between 5 and 10:</p>
    <input id="demo" type="text">
    <button type="button" onclick="myFunction()">Test Input</button>
    <p id="mess"></p>
    </body>
    </html>
    JavaScript 可用来在数据被送往server前对 HTML 表单中的这些输入数据进行验证。

    必填(或必选)项目

    以下的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,而且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):

    function validate_required(field,alerttxt)
    {
    with (field)
    {
    if (value==null||value=="")
      {alert(alerttxt);return false}
    else {return true}
    }
    }
    

    以下是连同 HTML 表单的代码:

    <html>
    <head>
    <script type="text/javascript">
    
    function validate_required(field,alerttxt)
    {
    with (field)
      {
      if (value==null||value=="")
        {alert(alerttxt);return false}
      else {return true}
      }
    }
    
    function validate_form(thisform)
    {
    with (thisform)
      {
      if (validate_required(email,"Email must be filled out!")==false)
        {email.focus();return false}
      }
    }
    </script>
    </head>
    
    <body>
    <form action="submitpage.htm" onsubmit="return validate_form(this)" method="post">
    Email: <input type="text" name="email" size="30">
    <input type="submit" value="Submit"> 
    </form>
    </body>
    
    </html>
    

    E-mail 验证

    以下的函数检查输入的数据是否符合电子邮件地址的基本的语法。

    意思就是说,输入的数据必须包括 @ 符号和点号(.)。同一时候,@ 不能够是邮件地址的首字符,而且 @ 之后需有至少一个点号:

    function validate_email(field,alerttxt)
    {
    with (field)
    {
    apos=value.indexOf("@")
    dotpos=value.lastIndexOf(".")
    if (apos<1||dotpos-apos<2) 
      {alert(alerttxt);return false}
    else {return true}
    }
    }
    

    以下是连同 HTML 表单的完整代码:

    <html>
    <head>
    <script type="text/javascript">
    function validate_email(field,alerttxt)
    {
    with (field)
    {
    apos=value.indexOf("@")
    dotpos=value.lastIndexOf(".")
    if (apos<1||dotpos-apos<2) 
      {alert(alerttxt);return false}
    else {return true}
    }
    }
    
    function validate_form(thisform)
    {
    with (thisform)
    {
    if (validate_email(email,"Not a valid e-mail address!")==false)
      {email.focus();return false}
    }
    }
    </script>
    </head>
    
    <body>
    <form action="submitpage.htm"onsubmit="return validate_form(this);" method="post">
    Email: <input type="text" name="email" size="30">
    <input type="submit" value="Submit"> 
    </form>
    </body>
    
    </html>
    


  • 相关阅读:
    [BZOJ3043]IncDec Sequence
    【NOIP2015】字串
    [NOIP]2016天天爱跑步
    【NOIP2015】运输计划
    [poj3565]Ants
    【ZOJ2760】How Many Shortest Path
    [POJ3281] Dining
    P1077摆花
    校内测之zay与银临 (day2)
    P1880石子合并
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7367371.html
Copyright © 2011-2022 走看看