JavaScript學(xué)習(xí)筆記

<!DOCTYPE html>
<html>
<head>
    <title>this is a html web</title>
    <meta charset="utf-8">
</head>
<body onload="checkCookies()">

<!-- document.write的使用 寫入 HTML 輸出-->
    <!-- 您只能在 HTML 輸出中使用 document.write。如果您在文檔加載后使用該方法,會(huì)覆蓋整個(gè)文檔。 -->
<p>
    document.write("<h1>this is a heading</h1>")
</p>

<!-- button點(diǎn)擊事件 -->
<p><button type="button" onclick="alert('歡迎使用html')">點(diǎn)我</button></p>


<!-- 改變 元素內(nèi)容 -->
<p id="demo">
JavaScript 能改變 HTML 元素的內(nèi)容。
</p>

<script>
function myFunction()
{
x=document.getElementById("demo");  // 找到元素
x.innerHTML="Hello JavaScript!";    // 改變內(nèi)容
x.style.color = "#ff0000";          //改變樣式
}
</script>
<button type="button" onclick="myFunction()">點(diǎn)擊這里改變?cè)貎?nèi)容</button>
<p></p>
<script>
    function changeImage()
    {
        element = document.getElementById('myImage')
        if (element.src.match('hui')) {
            element.src = "./images/huang.png"
        }else{
            element.src = "./images/hui.png"
        }
    }
</script>
<!-- 圖片可用相對(duì)路徑 也可以用絕對(duì)路徑 -->
![](./images/hui.png)

<!-- 輸入框 -->
<p>請(qǐng)輸入數(shù)字。如果輸入值不是數(shù)字,瀏覽器會(huì)彈出提示框。</p>
<input id="myInput" type="text" name="請(qǐng)輸入數(shù)字。如果輸入值不是數(shù)字,瀏覽器會(huì)彈出提示框。">
<script>
    function InputFuction()
    {
        var x = document.getElementById("myInput").value;
        if (x==""||isNaN(x)) {
            alert("不是數(shù)字");
        }
    }
</script>
<button type="button" onclick="InputFuction()">點(diǎn)擊驗(yàn)證輸入內(nèi)容</button>

<!-- 分號(hào)用于分隔 JavaScript 語(yǔ)句。通常我們?cè)诿織l可執(zhí)行的語(yǔ)句結(jié)尾添加分號(hào)。使用分號(hào)的另一用處是在一行中編寫多條語(yǔ)句。提示:您也可能看到不帶有分號(hào)的案例。在 JavaScript 中,用分號(hào)來(lái)結(jié)束語(yǔ)句是可選的。 
JavaScript 會(huì)忽略多余的空格。您可以向腳本添加空格,來(lái)提高其可讀性
可以在文本字符串中使用反斜杠對(duì)代碼行進(jìn)行換行  document.write("Hello \ World!");

JavaScript 變量
    變量必須以字母開頭
    變量也能以 $ 和 _ 符號(hào)開頭(不過(guò)我們不推薦這么做)
    變量名稱對(duì)大小寫敏感(y 和 Y 是不同的變量)

JavaScript 數(shù)據(jù)類型
    JavaScript 變量還能保存其他數(shù)據(jù)類型,比如文本值 (name="Bill Gates")。
    在 JavaScript 中,類似 "Bill Gates" 這樣一條文本被稱為字符串。
    JavaScript 變量有很多種類型,但是現(xiàn)在,我們只關(guān)注數(shù)字和字符串。
    當(dāng)您向變量分配文本值時(shí),應(yīng)該用雙引號(hào)或單引號(hào)包圍這個(gè)值。
    當(dāng)您向變量賦的值是數(shù)值時(shí),不要使用引號(hào)。如果您用引號(hào)包圍數(shù)值,該值會(huì)被作為文本來(lái)處理。

在一條語(yǔ)句中聲明很多變量。該語(yǔ)句以 var 開頭,并使用逗號(hào)分隔變量即可:
    var name="Gates", age=56, job="CEO";
    或
    var name="Gates",
    age=56,
    job="CEO";


    重新聲明 JavaScript 變量
如果重新聲明 JavaScript 變量,該變量的值不會(huì)丟失:
在以下兩條語(yǔ)句執(zhí)行后,變量 carname 的值依然是 "Volvo":
var carname="Volvo";
var carname;

JavaScript 數(shù)據(jù)類型
字符串、數(shù)字、布爾、數(shù)組、對(duì)象、Null、Undefined
    JavaScript 擁有動(dòng)態(tài)類型,這意味著相同的變量可用作不同的類型:
    var x                // x 為 undefined
    var x = 6;           // x 為數(shù)字
    var x = "Bill";      // x 為字符串

字符串可以是引號(hào)中的任意文本。您可以使用單引號(hào)或雙引號(hào)
var answer="Nice to meet you!";
var answer="He is called 'Bill'";
var answer='He is called "Bill"';

JavaScript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點(diǎn),也可以不帶:
var x1=34.00;      //使用小數(shù)點(diǎn)來(lái)寫
var x2=34;         //不使用小數(shù)點(diǎn)來(lái)寫
極大或極小的數(shù)字可以通過(guò)科學(xué)(指數(shù))計(jì)數(shù)法來(lái)書寫:
var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

布爾(邏輯)只能有兩個(gè)值:true 或 false。常用在條件測(cè)試中

JavaScript 數(shù)組
下面的代碼創(chuàng)建名為 cars 的數(shù)組:
var cars=new Array();
cars[0]="Audi";
cars[1]="BMW";
cars[2]="Volvo";
或者 (condensed array):
var cars=new Array("Audi","BMW","Volvo");


JavaScript 對(duì)象
對(duì)象由花括號(hào)分隔。在括號(hào)內(nèi)部,對(duì)象的屬性以名稱和值對(duì)的形式 (name : value) 來(lái)定義。屬性由逗號(hào)分隔:
var person={firstname:"Bill", lastname:"Gates", id:5566};

上面例子中的對(duì)象 (person) 有三個(gè)屬性:firstname、lastname 以及 id。
空格和折行無(wú)關(guān)緊要。聲明可橫跨多行:
var person={
firstname : "Bill",
lastname  : "Gates",
id        :  5566
};
對(duì)象屬性有兩種尋址方式:
name=person.lastname;
name=person["lastname"];


Undefined 和 Null
Undefined 這個(gè)值表示變量不含有值。
可以通過(guò)將變量的值設(shè)置為 null 來(lái)清空變量。


聲明變量類型
當(dāng)您聲明新變量時(shí),可以使用關(guān)鍵詞 "new" 來(lái)聲明其類型:
var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;



局部 JavaScript 變量
在 JavaScript 函數(shù)內(nèi)部聲明的變量(使用 var)是局部變量,所以只能在函數(shù)內(nèi)部訪問(wèn)它。(該變量的作用域是局部的)。
您可以在不同的函數(shù)中使用名稱相同的局部變量,因?yàn)橹挥新暶鬟^(guò)該變量的函數(shù)才能識(shí)別出該變量。
只要函數(shù)運(yùn)行完畢,本地變量就會(huì)被刪除。

全局 JavaScript 變量
在函數(shù)外聲明的變量是全局變量,網(wǎng)頁(yè)上的所有腳本和函數(shù)都能訪問(wèn)它。

JavaScript 變量的生存期
JavaScript 變量的生命期從它們被聲明的時(shí)間開始。
局部變量會(huì)在函數(shù)運(yùn)行以后被刪除。
全局變量會(huì)在頁(yè)面關(guān)閉后被刪除。

向未聲明的 JavaScript 變量來(lái)分配值
如果您把值賦給尚未聲明的變量,該變量將被自動(dòng)作為全局變量聲明。
carname="Volvo";
將聲明一個(gè)全局變量 carname,即使它在函數(shù)內(nèi)執(zhí)行。

如果把數(shù)字與字符串相加,結(jié)果將成為字符串。
-->

<p>點(diǎn)擊按鈕,遍歷對(duì)對(duì)象person的屬性</p>
<button type="button" onclick="ForInFunction()">點(diǎn)擊遍歷person</button>
<p id="textDemo"></p>
<script type="text/javascript">
    function ForInFunction(){
        var x;
        var txt="";
        var person={firstname:"Bill",lastname:"Gates",age:"56"};
        for (x in person) {
            txt=txt+person[x]+" ";
        }
document.getElementById("textDemo").innerHTML=txt;
    }

</script>

<!-- 

break 語(yǔ)句用于跳出循環(huán)。
continue 用于跳過(guò)循環(huán)中的一個(gè)迭代。



try 語(yǔ)句測(cè)試代碼塊的錯(cuò)誤。
catch 語(yǔ)句處理錯(cuò)誤。
throw 語(yǔ)句創(chuàng)建自定義錯(cuò)誤。

JavaScript 測(cè)試和捕捉
try 語(yǔ)句允許我們定義在執(zhí)行時(shí)進(jìn)行錯(cuò)誤測(cè)試的代碼塊。
catch 語(yǔ)句允許我們定義當(dāng) try 代碼塊發(fā)生錯(cuò)誤時(shí),所執(zhí)行的代碼塊。
JavaScript 語(yǔ)句 try 和 catch 是成對(duì)出現(xiàn)的。
try
  {
  //在這里運(yùn)行代碼
  }
catch(err)
  {
  //在這里處理錯(cuò)誤
  }

Throw 語(yǔ)句
throw 語(yǔ)句允許我們創(chuàng)建自定義錯(cuò)誤。
正確的技術(shù)術(shù)語(yǔ)是:創(chuàng)建或拋出異常(exception)。
如果把 throw 與 try 和 catch 一起使用,那么您能夠控制程序流,并生成自定義的錯(cuò)誤消息。
throw exception
異??梢允?JavaScript 字符串、數(shù)字、邏輯值或?qū)ο蟆? -->
<p></p>
 <script>
var txt="";
function message()
{
try
  {
  addlert("Welcome guest!");
  }
catch(err)
  {
  txt="本頁(yè)有一個(gè)錯(cuò)誤。\n\n";
  txt+="錯(cuò)誤描述:" + err.message + "\n\n";
  txt+="點(diǎn)擊確定繼續(xù)。\n\n";
  alert(txt);
  }
}
</script>
<input type="button" value="查驗(yàn)代碼塊是否正確" onclick="message()">
<p></p>


<script>
function throwFunction()
{
  try
  { 
   var x=document.getElementById("throwDemo").value;
   if(x=="")    throw "值為空";
   if(isNaN(x)) throw "不是數(shù)字";
   if(x>10)     throw "太大";
   if(x<5)      throw "太小";
  }
catch(err)
  {
   var y=document.getElementById("mess");
   y.innerHTML="錯(cuò)誤:" + err + "。";
  }
}
</script>
<p>請(qǐng)輸入一個(gè)5到10之間的數(shù)字</p>
<input type="text" id="throwDemo">
<button type="button" onclick="throwFunction()">測(cè)試輸入值</button>
<p id="mess"></p>


<!-- 

JavaScript 可用來(lái)在數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。
JavaScript 表單驗(yàn)證
JavaScript 可用來(lái)在數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。
被 JavaScript 驗(yàn)證的這些典型的表單數(shù)據(jù)有:
    用戶是否已填寫表單中的必填項(xiàng)目?
    用戶輸入的郵件地址是否合法?
    用戶是否已輸入合法的日期?
    用戶是否在數(shù)據(jù)域 (numeric field) 中輸入了文本?

 -->

 <!-- 通過(guò)可編程的對(duì)象模型,JavaScript 獲得了足夠的能力來(lái)創(chuàng)建動(dòng)態(tài)的 HTML。
    JavaScript 能夠改變頁(yè)面中的所有 HTML 元素
    JavaScript 能夠改變頁(yè)面中的所有 HTML 屬性
    JavaScript 能夠改變頁(yè)面中的所有 CSS 樣式
    JavaScript 能夠?qū)?yè)面中的所有事件做出反應(yīng)


查找 HTML 元素
通常,通過(guò) JavaScript,您需要操作 HTML 元素。
為了做到這件事情,您必須首先找到該元素。有三種方法來(lái)做這件事:
    通過(guò) id 找到 HTML 元素
    通過(guò)標(biāo)簽名找到 HTML 元素
    通過(guò)類名找到 HTML 元素

提示:通過(guò)類名查找 HTML 元素在 IE 5,6,7,8 中無(wú)效。


改變 HTML 內(nèi)容
修改 HTML 內(nèi)容的最簡(jiǎn)單的方法是使用 innerHTML 屬性。
document.getElementById(id).innerHTML=new HTML

改變 HTML 屬性
如需改變 HTML 元素的屬性,請(qǐng)使用這個(gè)語(yǔ)法:
document.getElementById(id).attribute=new value
 -->
![](./images/郁金香.png)
<script type="text/javascript">
    document.getElementById("imageMales").src="./images/盧浦大橋.png"
</script>

<!-- 改變 HTML 樣式
如需改變 HTML 元素的樣式,請(qǐng)使用這個(gè)語(yǔ)法:
document.getElementById(id).style.property=new style -->
<p id="p1">Hello World!</p>
<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script>

<p id="changeColor">change text color</P>
<script type="text/javascript">
    function changeColorFunction(){
        document.getElementById("changeColor").style.color="red";
    }
</script>
<button type="button" onclick="changeColorFunction()">點(diǎn)擊改變顏色</button>


<!-- visibility 隱藏和顯示 -->
<p id="visibilityId">這是一段文本,點(diǎn)擊按鈕隱藏或者顯示該文本</p>
<script type="text/javascript">
    function visibilityFunction(){
        var btn=document.getElementById("visibilityBtn");
        if (btn.innerText=="隱藏") {
            btn.innerText="顯示";
            document.getElementById("visibilityId").style.visibility="hidden";
        }else{
            btn.innerText="隱藏";
            document.getElementById("visibilityId").style.visibility="visible";
        }
    }
</script>
<button id="visibilityBtn" type="button" onclick="visibilityFunction()">隱藏</button>



<!-- 對(duì)事件做出反應(yīng)
我們可以在事件發(fā)生時(shí)執(zhí)行 JavaScript,比如當(dāng)用戶在 HTML 元素上點(diǎn)擊時(shí)。
如需在用戶點(diǎn)擊某個(gè)元素時(shí)執(zhí)行代碼,請(qǐng)向一個(gè) HTML 事件屬性添加 JavaScript 代碼:
onclick=JavaScript
HTML 事件的例子:
    當(dāng)用戶點(diǎn)擊鼠標(biāo)時(shí)
    當(dāng)網(wǎng)頁(yè)已加載時(shí)
    當(dāng)圖像已加載時(shí)
    當(dāng)鼠標(biāo)移動(dòng)到元素上時(shí)
    當(dāng)輸入字段被改變時(shí)
    當(dāng)提交 HTML 表單時(shí)
    當(dāng)用戶觸發(fā)按鍵時(shí)
 -->

<h1 onclick="this.innerHTML='謝謝!'">點(diǎn)擊文本改變內(nèi)容</h1>

<script>
function changetext(id)
{
id.innerHTML="謝謝!";
}
</script>
<p onclick="changetext(this)">點(diǎn)擊文本改變內(nèi)容</p>


<!-- 使用 HTML DOM 來(lái)分配事件
HTML DOM 允許您通過(guò)使用 JavaScript 來(lái)向 HTML 元素分配事件: -->
<button id="displayBtn">點(diǎn)擊按鈕執(zhí)行<em>displayDate()</em>函數(shù)</button>
<script type="text/javascript">
    document.getElementById("displayBtn").onclick=function(){displayDate()};
    function displayDate(){
        document.getElementById("displayDemo").innerHTML=Date();
    }
</script>
<p id="displayDemo"></p>

<!-- onload 和 onunload 事件
onload 和 onunload 事件會(huì)在用戶進(jìn)入或離開頁(yè)面時(shí)被觸發(fā)。
onload 事件可用于檢測(cè)訪問(wèn)者的瀏覽器類型和瀏覽器版本,并基于這些信息來(lái)加載網(wǎng)頁(yè)的正確版本。
onload 和 onunload 事件可用于處理 cookie。 -->
<script type="text/javascript">
    function checkCookies(){
        if (navigator.cookieEnabled==true) {
            alert("已啟用cookies");
        }else
        alert("未啟用cookies");
    }
</script>

<!-- onchange 事件
onchange 事件常結(jié)合對(duì)輸入字段的驗(yàn)證來(lái)使用。
下面是一個(gè)如何使用 onchange 的例子。當(dāng)用戶改變輸入字段的內(nèi)容時(shí),會(huì)調(diào)用 upperCase() 函數(shù)。 -->
<script type="text/javascript">
    function onchangeFunction(){
        var x=document.getElementById("fname");
        x.value=x.value.toUpperCase();
    }
</script>
請(qǐng)輸入英文字符:<input type="text" id="fname" onchange="onchangeFunction()">
<P>當(dāng)您離開輸入字段時(shí),會(huì)觸發(fā)將輸入文本轉(zhuǎn)化為大寫的函數(shù)</P>

<!-- onmouseover 和 onmouseout 事件
onmouseover 和 onmouseout 事件可用于在用戶的鼠標(biāo)移至 HTML 元素上方或移出元素時(shí)觸發(fā)函數(shù)。 -->
<div onmouseover="mOver(this)" onmouseout="mOut(this)" style="background-color: green;width: 120px;height: 20px;padding: 10px;color: #ffffff">把鼠標(biāo)移到上面</div>
<script type="text/javascript">
    function mOver(obj){
        obj.innerHTML="謝謝"
    }
    function mOut(obj){
        obj.innerHTML="把鼠標(biāo)移到上面"
    }
</script>
<p></p>
<!-- onmousedown、onmouseup 以及 onclick 事件
onmousedown, onmouseup 以及 onclick 構(gòu)成了鼠標(biāo)點(diǎn)擊事件的所有部分。首先當(dāng)點(diǎn)擊鼠標(biāo)按鈕時(shí),會(huì)觸發(fā) onmousedown 事件,當(dāng)釋放鼠標(biāo)按鈕時(shí),會(huì)觸發(fā) onmouseup 事件,最后,當(dāng)完成鼠標(biāo)點(diǎn)擊時(shí),會(huì)觸發(fā) onclick 事件。 -->
<div onmousedown="mDown(this)" onmouseup="mUp(this)" style="background-color: green;color: #ffffff;width: 90px;height: 20px;padding: 10px;font-size: 12px">請(qǐng)點(diǎn)擊</div>
<script type="text/javascript">
    function mDown(obj){
        obj.style.backgroundColor="#1ec5e5";
        obj.innerHTML="請(qǐng)釋放鼠標(biāo)按鈕"
    }
    function mUp(obj){
        obj.style.backgroundColor="green";
        obj.innerHTML="請(qǐng)按下鼠標(biāo)按鈕"
    }
</script>
<p></p>
<h1 onmouseover="style.color='red'" onmouseout="style.color='blue'">
請(qǐng)把鼠標(biāo)移到這段文本上</h1>

<div id="divdiv">
    <p>這是段落一</p>
    <p>這是段落二</p>
</div>
<script type="text/javascript">
    var para=document.createElement("p");
    var node=document.createTextNode("這是新增段落三");
    para.appendChild(node);
    var element=document.getElementById("divdiv");
    element.appendChild(para);
</script>
<!-- 這段代碼創(chuàng)建新的 <p> 元素:

var para=document.createElement("p");

如需向 <p> 元素添加文本,您必須首先創(chuàng)建文本節(jié)點(diǎn)。這段代碼創(chuàng)建了一個(gè)文本節(jié)點(diǎn):

var node=document.createTextNode("這是新段落。");

然后您必須向 <p> 元素追加這個(gè)文本節(jié)點(diǎn):

para.appendChild(node);

最后您必須向一個(gè)已有的元素追加這個(gè)新元素。

這段代碼找到一個(gè)已有的元素:

var element=document.getElementById("div1");

這段代碼向這個(gè)已有的元素追加新元素:

element.appendChild(para); -->

<script type="text/javascript">
    // var element=document.getElementById("divdiv");
    element.removeChild(para);
</script>



<!-- 
JavaScript 中的所有事物都是對(duì)象:字符串、數(shù)值、數(shù)組、函數(shù)...
此外,JavaScript 允許自定義對(duì)象。
 -->

 <!-- 數(shù)字精度
整數(shù)(不使用小數(shù)點(diǎn)或指數(shù)計(jì)數(shù)法)最多為 15 位。
小數(shù)的最大位數(shù)是 17,但是浮點(diǎn)運(yùn)算并不總是 100% 準(zhǔn)確: 

如果前綴為 0,則 JavaScript 會(huì)把數(shù)值常量解釋為八進(jìn)制數(shù),如果前綴為 0 和 "x",則解釋為十六進(jìn)制數(shù)。
提示:絕不要在數(shù)字前面寫零,除非您需要進(jìn)行八進(jìn)制轉(zhuǎn)換。
-->


<!-- 
返回當(dāng)日的日期和時(shí)間
    1.使用 Date() 方法獲得當(dāng)日的日期。
getTime()
    2.getTime() 返回從 1970 年 1 月 1 日至今的毫秒數(shù)。
setFullYear()
    3.使用 setFullYear() 設(shè)置具體的日期。
toUTCString()
    4.使用 toUTCString() 將當(dāng)日的日期(根據(jù) UTC)轉(zhuǎn)換為字符串。
getDay()
    4.使用 getDay() 和數(shù)組來(lái)顯示星期,而不僅僅是數(shù)字。
-->

<script type="text/javascript">
document.write(Date()+"<br />");

var d=new Date();
document.write("從 1970/01/01 至今已過(guò)去 " + d.getTime() + " 毫秒"+"<br />");

var d = new Date();
d.setFullYear(1992,10,3);
document.write(d+"<br />");

var d = new Date();
document.write (d.toUTCString()+"<br />");

var d=new Date()
var weekday=new Array(7)
weekday[0]="星期日"
weekday[1]="星期一"
weekday[2]="星期二"
weekday[3]="星期三"
weekday[4]="星期四"
weekday[5]="星期五"
weekday[6]="星期六"

document.write("今天是" + weekday[d.getDay()])


var myDate=new Date();
myDate.setFullYear(2008,8,9);

var today = new Date();

if (myDate>today)
{
alert("Today is before 9th August 2008");
}
else
{
alert("Today is after 9th August 2008");
}

</script>
<p></p>


<!-- 數(shù)組對(duì)象的作用是:使用單獨(dú)的變量名來(lái)存儲(chǔ)一系列的值。 -->
<script type="text/javascript">
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"

// 遍歷數(shù)組
for (i=0;i<mycars.length;i++)
{
document.write(mycars[i] + "<br />")
}

for (x in mycars)
{
document.write(mycars[x] + "<br />")
}


// 合并數(shù)組
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"

document.write(arr.concat(arr2))

// 使用 join() 方法將數(shù)組的所有元素組成一個(gè)字符串。
document.write(arr.join());
document.write("<br />");
document.write(arr.join("."));
document.write("<br />");

// 文字?jǐn)?shù)組 - sort()   使用 sort() 方法從字面上對(duì)數(shù)組進(jìn)行排序
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr+"<br/>");
document.write(arr.sort())
document.write("<br />");


// 數(shù)字?jǐn)?shù)組 - sort()    使用 sort() 方法從數(shù)值上對(duì)數(shù)組進(jìn)行排序。
function sortNumber(a, b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr+"<br/>")
document.write(arr.sort(sortNumber))
</script>

<!-- 
Boolean(邏輯)對(duì)象用于將非邏輯值轉(zhuǎn)換為邏輯值(true 或者 false)

創(chuàng)建 Boolean 對(duì)象
使用關(guān)鍵詞 new 來(lái)定義 Boolean 對(duì)象。下面的代碼定義了一個(gè)名為 myBoolean 的邏輯對(duì)象:
var myBoolean=new Boolean()
如果邏輯對(duì)象無(wú)初始值或者其值為 0、-0、null、""、false、undefined 或者 NaN,那么對(duì)象的值為 false。否則,其值為 true(即使當(dāng)自變量為字符串 "false" 時(shí))
下面的所有的代碼行均會(huì)創(chuàng)建初始值為 false 的 Boolean 對(duì)象。
var myBoolean=new Boolean();
var myBoolean=new Boolean(0);
var myBoolean=new Boolean(null);
var myBoolean=new Boolean("");
var myBoolean=new Boolean(false);
var myBoolean=new Boolean(NaN);

下面的所有的代碼行均會(huì)創(chuàng)初始值為 true 的 Boolean 對(duì)象:
var myBoolean=new Boolean(1);
var myBoolean=new Boolean(true);
var myBoolean=new Boolean("true");
var myBoolean=new Boolean("false");
var myBoolean=new Boolean("Bill Gates");

 -->
<script type="text/javascript">
var b1=new Boolean( 0)
var b2=new Boolean(1)
var b3=new Boolean("")
var b4=new Boolean(null)
var b5=new Boolean(NaN)
var b6=new Boolean("false")
var b7=new Boolean()

document.write("0 是邏輯的 "+ b1 +"<br />")
document.write("1 是邏輯的 "+ b2 +"<br />")
document.write("空字符串是邏輯的 "+ b3 + "<br />")
document.write("null 是邏輯的 "+ b4+ "<br />")
document.write("NaN 是邏輯的 "+ b5 +"<br />")
document.write("字符串 'false' 是邏輯的 "+ b6 +"<br />")
document.write(b7+"<br/>")
</script>

<!--
Math 對(duì)象
Math(算數(shù))對(duì)象的作用是:執(zhí)行普通的算數(shù)任務(wù)。
Math 對(duì)象提供多種算數(shù)值類型和函數(shù)。無(wú)需在使用這個(gè)對(duì)象之前對(duì)它進(jìn)行定義。


算數(shù)值

JavaScript 提供 8 種可被 Math 對(duì)象訪問(wèn)的算數(shù)值:

    常數(shù)
    圓周率
    2 的平方根
    1/2 的平方根
    2 的自然對(duì)數(shù)
    10 的自然對(duì)數(shù)
    以 2 為底的 e 的對(duì)數(shù)
    以 10 為底的 e 的對(duì)數(shù)

這是在 Javascript 中使用這些值的方法:(與上面的算數(shù)值一一對(duì)應(yīng))

    Math.E
    Math.PI
    Math.SQRT2
    Math.SQRT1_2
    Math.LN2
    Math.LN10
    Math.LOG2E
    Math.LOG10E

 Math 對(duì)象的 round 方法對(duì)一個(gè)數(shù)進(jìn)行四舍五入。
document.write(Math.round(4.7))            //5

Math 對(duì)象的 random() 方法來(lái)返回一個(gè)介于 0 和 1 之間的隨機(jī)數(shù):
document.write(Math.random())

使用了 Math 對(duì)象的 floor() 方法和 random() 來(lái)返回一個(gè)介于 0 和 10 之間的隨機(jī)數(shù):
document.write(Math.floor(Math.random()*11))        

-->
<script type="text/javascript">
// round()的使用 
    document.write(Math.round(0.456)+"<br/>")
    document.write(Math.round(0.789)+"<br/>")
    document.write(Math.round(0.5)+"<br/>")
    document.write(Math.round(-4.45)+"<br/>")
    document.write(Math.round(-4.67)+"<br/>")
// random()的使用  使用 random() 來(lái)返回 0 到 1 之間的隨機(jī)數(shù)。
    document.write(Math.random()+"<br/>")

// 使用 max() 來(lái)返回兩個(gè)給定的數(shù)中的較大的數(shù)。(在 ECMASCript v3 之前,該方法只有兩個(gè)參數(shù)。)
document.write(Math.max(5,7) + "<br />")
document.write(Math.max(-3,5) + "<br />")
document.write(Math.max(-3,-5) + "<br />")
document.write(Math.max(7.25,7.30) + "<br />")
// 使用 min() 來(lái)返回兩個(gè)給定的數(shù)中的較小的數(shù)。(在 ECMASCript v3 之前,該方法只有兩個(gè)參數(shù)。)
document.write(Math.min(5,7,2,3) + "<br />")
document.write(Math.min(-3,5) + "<br />")
document.write(Math.min(-3,-5) + "<br />")
document.write(Math.min(7.25,7.30))

</script>

<!-- 
什么是 RegExp?
RegExp 是正則表達(dá)式的縮寫。
當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來(lái)描述要檢索的內(nèi)容。RegExp 就是這種模式。
簡(jiǎn)單的模式可以是一個(gè)單獨(dú)的字符。
更復(fù)雜的模式包括了更多的字符,并可用于解析、格式檢查、替換等等。
您可以規(guī)定字符串中的檢索位置,以及要檢索的字符類型,等等。


定義 RegExp
RegExp 對(duì)象用于存儲(chǔ)檢索模式。
通過(guò) new 關(guān)鍵詞來(lái)定義 RegExp 對(duì)象。以下代碼定義了名為 patt1 的 RegExp 對(duì)象,其模式是 "e":
var patt1=new RegExp("e");
當(dāng)您使用該 RegExp 對(duì)象在一個(gè)字符串中檢索時(shí),將尋找的是字符 "e"。


RegExp 對(duì)象的方法
    RegExp 對(duì)象有 3 個(gè)方法:test()、exec() 以及 compile()。

test()
    test() 方法檢索字符串中的指定值。返回值是 true 或 false。
example:
    var patt1=new RegExp("e");
    document.write(patt1.test("The best things in life are free")); 

exec()
    exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒(méi)有發(fā)現(xiàn)匹配,則返回 null。
example:
    var patt1=new RegExp("e");
    document.write(patt1.exec("The best things in life are free")); 

compile()
    compile() 方法用于改變 RegExp。
    compile() 既可以改變檢索模式,也可以添加或刪除第二個(gè)參數(shù)。
 -->
<p></p>
<script type="text/javascript">
    var patt1=new RegExp("e","g")
    do{
        result=patt1.exec("the best things in life are free")
        document.write(result+"<br/>")
    }
    while(result!=null)
</script>


<script type="text/javascript">
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));

patt1.compile("d");  //由于字符串中存在 "e",而沒(méi)有 "d"

document.write(patt1.test("The best things in life are free"));
</script>

<!-- 
Window 尺寸

有三種方法能夠確定瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動(dòng)條)。

對(duì)于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

    window.innerHeight - 瀏覽器窗口的內(nèi)部高度
    window.innerWidth - 瀏覽器窗口的內(nèi)部寬度

對(duì)于 Internet Explorer 8、7、6、5:

    document.documentElement.clientHeight
    document.documentElement.clientWidth

或者

    document.body.clientHeight
    document.body.clientWidth

實(shí)用的 JavaScript 方案(涵蓋所有瀏覽器):
 -->

<p id="wh"></p>

<script>
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var h=window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

x=document.getElementById("wh");
x.innerHTML="瀏覽器的內(nèi)部窗口寬度:" + w + ",高度:" + h + "。"
</script>

<!-- 
其他 Window 方法
一些其他方法:
    window.open() - 打開新窗口
    window.close() - 關(guān)閉當(dāng)前窗口
    window.moveTo() - 移動(dòng)當(dāng)前窗口
    window.resizeTo() - 調(diào)整當(dāng)前窗口的尺寸
 -->

<!-- 
Window Screen
window.screen 對(duì)象包含有關(guān)用戶屏幕的信息。
window.screen 對(duì)象在編寫時(shí)可以不使用 window 這個(gè)前綴。

一些屬性:

    screen.availWidth - 可用的屏幕寬度
    screen.availHeight - 可用的屏幕高度

Window Screen 可用寬度
screen.availWidth 屬性返回訪問(wèn)者屏幕的寬度,以像素計(jì),減去界面特性,比如窗口任務(wù)欄。

Window Screen 可用高度
screen.availHeight 屬性返回訪問(wèn)者屏幕的高度,以像素計(jì),減去界面特性,比如窗口任務(wù)欄。
 -->


 <!-- 
window.location 對(duì)象用于獲得當(dāng)前頁(yè)面的地址 (URL),并把瀏覽器重定向到新的頁(yè)面。
Window Location
window.location 對(duì)象在編寫時(shí)可不使用 window 這個(gè)前綴。

一些例子:
    location.href 屬性返回當(dāng)前頁(yè)面的 URL
    location.hostname 返回 web 主機(jī)的域名
    location.pathname 返回當(dāng)前頁(yè)面的路徑和文件名
    location.port 返回 web 主機(jī)的端口 (80 或 443)
    location.protocol 返回所使用的 web 協(xié)議(http:// 或 https://)
    location.assign() 方法加載新的文檔
  -->
<script>
function newDoc()
 {
 window.location.assign("http://www.w3school.com.cn")
 }
</script>
<p><input type="button" value="加載新文檔" onclick="newDoc()"></p>


<!-- 
Window History
window.history 對(duì)象包含瀏覽器的歷史。
window.history 對(duì)象在編寫時(shí)可不使用 window 這個(gè)前綴。
為了保護(hù)用戶隱私,對(duì) JavaScript 訪問(wèn)該對(duì)象的方法做出了限制。

一些方法:

    history.back() - 與在瀏覽器點(diǎn)擊后退按鈕相同
    history.forward() - 與在瀏覽器中點(diǎn)擊按鈕向前相同
 -->


 <!-- 
window.navigator
window.navigator 對(duì)象包含有關(guān)訪問(wèn)者瀏覽器的信息。
window.navigator 對(duì)象在編寫時(shí)可不使用 window 這個(gè)前綴。 


警告:來(lái)自 navigator 對(duì)象的信息具有誤導(dǎo)性,不應(yīng)該被用于檢測(cè)瀏覽器版本,這是因?yàn)椋?    navigator 數(shù)據(jù)可被瀏覽器使用者更改
    瀏覽器無(wú)法報(bào)告晚于瀏覽器發(fā)布的新操作系統(tǒng)

瀏覽器檢測(cè)
由于 navigator 可誤導(dǎo)瀏覽器檢測(cè),使用對(duì)象檢測(cè)可用來(lái)嗅探不同的瀏覽器。
由于不同的瀏覽器支持不同的對(duì)象,您可以使用對(duì)象來(lái)檢測(cè)瀏覽器。例如,由于只有 Opera 支持屬性 "window.opera",您可以據(jù)此識(shí)別出 Opera。

例子:if (window.opera) {...some action...}

-->

<div id="example"></div>

<script>

txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
txt+= "<p>Browser Name: " + navigator.appName + "</p>";
txt+= "<p>Browser Version: " + navigator.appVersion + "</p>";
txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
txt+= "<p>Platform: " + navigator.platform + "</p>";
txt+= "<p>User-agent header: " + navigator.userAgent + "</p>";
txt+= "<p>User-agent language: " + navigator.systemLanguage + "</p>";

document.getElementById("example").innerHTML=txt;
</script>

<!-- 

警告框
警告框經(jīng)常用于確保用戶可以得到某些信息。
當(dāng)警告框出現(xiàn)后,用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作。
語(yǔ)法:
alert("文本")


確認(rèn)框
確認(rèn)框用于使用戶可以驗(yàn)證或者接受某些信息。
當(dāng)確認(rèn)框出現(xiàn)后,用戶需要點(diǎn)擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作。
如果用戶點(diǎn)擊確認(rèn),那么返回值為 true。如果用戶點(diǎn)擊取消,那么返回值為 false。
語(yǔ)法:
confirm("文本")


提示框
提示框經(jīng)常用于提示用戶在進(jìn)入頁(yè)面前輸入某個(gè)值。
當(dāng)提示框出現(xiàn)后,用戶需要輸入某個(gè)值,然后點(diǎn)擊確認(rèn)或取消按鈕才能繼續(xù)操縱。
如果用戶點(diǎn)擊確認(rèn),那么返回值為輸入的值。如果用戶點(diǎn)擊取消,那么返回值為 null。
語(yǔ)法:
prompt("文本","默認(rèn)值")

 -->
 <p><input type="button" onclick="disp_alert()" value="顯示警告框"></p>
 <script type="text/javascript">
function disp_alert()
{
alert("再次向您問(wèn)好!在這里,我們向您演示" + '\n' + "如何向警告框添加折行。")
}
</script>

<!-- JavaScript 計(jì)時(shí)
 通過(guò)使用 JavaScript,我們有能力做到在一個(gè)設(shè)定的時(shí)間間隔之后來(lái)執(zhí)行代碼,而不是在函數(shù)被調(diào)用后立即執(zhí)行。我們稱之為計(jì)時(shí)事件。-->

 <!-- 計(jì)時(shí) 5 秒后彈出一個(gè)警告框 -->
<script type="text/javascript">
    function timedMsg(){
        setTimeout("alert('5秒了')",5000);
    }
</script>
<p><button onclick="timedMsg()">點(diǎn)擊按鈕5秒后給出提示</button></p>

<!-- 一個(gè)無(wú)窮循環(huán)中的計(jì)時(shí)事件 -->
<script type="text/javascript">
    var t=0;
    function timedOut(){
        document.getElementById("timedOutTxt").innerText=t;
        t++;
        setTimeout("timedOut()",1000);
    }
</script>
<p id="timedOutTxt"><button onclick="timedOut()">開始計(jì)時(shí)</button>計(jì)時(shí)</p>

<!-- 帶有停止按鈕的無(wú)窮循環(huán)中的計(jì)時(shí)事件 

setTimeout()
    未來(lái)的某時(shí)執(zhí)行代碼
clearTimeout()
    取消setTimeout() 

setTimeout()
語(yǔ)法
var t=setTimeout("javascript語(yǔ)句",毫秒)

setTimeout() 方法會(huì)返回某個(gè)值。在上面的語(yǔ)句中,值被儲(chǔ)存在名為 t 的變量中。假如你希望取消這個(gè) setTimeout(),你可以使用這個(gè)變量名來(lái)指定它。

setTimeout() 的第一個(gè)參數(shù)是含有 JavaScript 語(yǔ)句的字符串。這個(gè)語(yǔ)句可能諸如 "alert('5 seconds!')",或者對(duì)函數(shù)的調(diào)用,諸如 alertMsg()"。

第二個(gè)參數(shù)指示從當(dāng)前起多少毫秒后執(zhí)行第一個(gè)參數(shù)。
-->
<script type="text/javascript">
    var t=0
    var tim
    function startTimedOut(){
        document.getElementById("stTimeTxt").value=t
        t=t+1
        tim=setTimeout("startTimedOut()",1000)
    }
    function stopTimedOut(){
        t=0;
        setTimeout("document.getElementById('stTimeTxt').value=0",0);
        clearTimeout(tim);
    }
</script>
<form>
<input type="button" value="開始計(jì)時(shí)!" onClick="startTimedOut()">
<input type="text" id="stTimeTxt">
<input type="button" value="停止計(jì)時(shí)!" onClick="stopTimedOut()">
</form>

<!-- 什么是cookie?

cookie 是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè) cookie。你可以使用 JavaScript 來(lái)創(chuàng)建和取回 cookie 的值。
cookie 用來(lái)識(shí)別用戶。

名字 cookie
    當(dāng)訪問(wèn)者首次訪問(wèn)頁(yè)面時(shí),他或她也許會(huì)填寫他/她們的名字。名字會(huì)存儲(chǔ)于 cookie 中。當(dāng)訪問(wèn)者再次訪問(wèn)網(wǎng)站時(shí),他們會(huì)收到類似 "Welcome John Doe!" 的歡迎詞。而名字則是從 cookie 中取回的。
密碼 cookie
    當(dāng)訪問(wèn)者首次訪問(wèn)頁(yè)面時(shí),他或她也許會(huì)填寫他/她們的密碼。密碼也可被存儲(chǔ)于 cookie 中。當(dāng)他們?cè)俅卧L問(wèn)網(wǎng)站時(shí),密碼就會(huì)從 cookie 中取回。
日期 cookie
    當(dāng)訪問(wèn)者首次訪問(wèn)你的網(wǎng)站時(shí),當(dāng)前的日期可存儲(chǔ)于 cookie 中。當(dāng)他們?cè)俅卧L問(wèn)網(wǎng)站時(shí),他們會(huì)收到類似這樣的一條消息:"Your last visit was on Tuesday August 11, 2005!"。日期也是從 cookie 中取回的。  -->


<!-- JavaScript 庫(kù) - jQuery、Prototype、MooTools。
jQuery
jQuery 是目前最受歡迎的 JavaScript 框架。
它使用 CSS 選擇器來(lái)訪問(wèn)和操作網(wǎng)頁(yè)上的 HTML 元素(DOM 對(duì)象)。
jQuery 同時(shí)提供 companion UI(用戶界面)和插件。
許多大公司在網(wǎng)站上使用 jQuery:
    Google
    Microsoft
    IBM
    Netflix

Prototype
Prototype 是一種庫(kù),提供用于執(zhí)行常見 web 任務(wù)的簡(jiǎn)單 API。
API 是應(yīng)用程序編程接口(Application Programming Interface)的縮寫。它是包含屬性和方法的庫(kù),用于操作 HTML DOM。
Prototype 通過(guò)提供類和繼承,實(shí)現(xiàn)了對(duì) JavaScript 的增強(qiáng)。
 
MooTools
MooTools 也是一個(gè)框架,提供了可使常見的 JavaScript 編程更為簡(jiǎn)單的 API。
MooTools 也含有一些輕量級(jí)的效果和動(dòng)畫函數(shù)。
YUI - Yahoo! User Interface Framework,涵蓋大量函數(shù)的大型庫(kù),從簡(jiǎn)單的 JavaScript 功能到完整的 internet widget。

其他框架
Ext JS - 可定制的 widget,用于構(gòu)建富因特網(wǎng)應(yīng)用程序(rich Internet applications)。
Dojo - 用于 DOM 操作、事件、widget 等的工具包。
script.aculo.us - 開源的 JavaScript 框架,針對(duì)可視效果和界面行為。
UIZE - Widget、AJAX、DOM、模板等等。-->


</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容