js筆記

用法

JS內部引用

<script type="text/javascript">
    document.write("hello");
    alert("JS代碼")
</script>

引用JS外部文件

<script src="myscript.js"></script>

注意: javascript作為一種腳本語言可以放在html頁面中任何位置,但是瀏覽器解釋html時是按先后順序的,所以前面的script就先被執行。比如進行頁面顯示初始化的js必須放在head里面,因為初始化都要求提前進行(如給頁面body設置css等);而如果是通過事件調用執行的function那么對位置沒什么要求的。

注釋

單行注釋,在注釋內容前加符號"http://""

多行注釋以"/*"開始,以"*/"結束。

變量

定義變量使用關鍵字var,語法如下:

var 變量名

變量名可以任意取名,但要遵循命名規則:

1.變量必須使用字母、下劃線(_)或者美元符($)開始。

2.然后可以使用任意多個英文字母、數字、下劃線(_)或者美元符($)組成。

3.不能使用JavaScript關鍵詞與JavaScript保留字。

變量要先聲明再賦值,如下:

var mychar;
mychar="javascript";
var mynum = 6;

變量可以重復賦值,如下:

var mychar;
mychar="javascript";
mychar="hello";

注意:

  1. 在JS中區分大小寫,如變量mychar與myChar是不一樣的,表示是兩個變量。

  2. 變量雖然也可以不聲明,直接使用,但不規范,需要先聲明,后使用。

判斷語句(if...else)

語法:

if(條件)
{ 條件成立時執行的代碼 }
else
{ 條件不成立時執行的代碼 }

函數

如何定義一個函數呢?基本語法如下:

function 函數名()
{
     函數代碼;
}

說明:

  1. function定義函數的關鍵字。

  2. "函數名"你為函數取的名字。

  3. "函數代碼"替換為完成特定功能的代碼。

函數調用:

函數定義好后,是不能自動執行的,所以需調用它,只需直接在需要的位置寫函數就ok了,代碼如下:

<script type="text/javascript">
    function contxt() //定義函數
    {
        alert("哈哈,調用函數了!");
    }
</script>
   
<form>
    <input type="button" value="點擊我" onclick="contxt()" />  
</form>

輸出內容(document.write)

document.write() 可用于直接向 HTML 輸出流寫內容。簡單的說就是直接在網頁中輸出內容。

<script type="text/javascript">

 第一種:輸出內容用""括起,直接輸出""號內的內容。
    document.write("I love JavaScript!"); //內容用""括起來,""里的內容直接輸出。
      
 第二種:通過變量,輸出內容
    var mystr="hello world!";
    document.write(mystr);  //直接寫變量名,輸出變量存儲的內容。
    
 第三種:輸出多項內容,內容之間用+號連接。
    var mystr="hello";
    document.write(mystr+"I love JavaScript"); //多項內容之間用+號連接
      
 第四種:輸出HTML標簽,并起作用,標簽使用""括起來。
    var mystr="hello";
    document.write(mystr+"<br>");//輸出hello后,輸出一個換行符
      document.write("JavaScript");

</script>

如何輸出空格, 解決方法:

  1. 使用輸出html標簽來解決
 document.write("  "+"1"+"    "+"23");
  1. 使用CSS樣式來解決
document.write("<span style='white-space:pre;'>"+"  1        2    3    "+"</span>");

在輸出時添加“white-space:pre;”樣式屬性。這個樣式表示"空白會被瀏覽器保留"

警告(alert 消息對話框)

alert(字符串或變量);  

注意:

  1. 在點擊對話框"確定"按鈕前,不能進行任何其它操作。

  2. 消息對話框通常可以用于調試程序。

  3. alert輸出內容,可以是字符串或變量,與document.write 相似。

確認(confirm 消息對話框)

語法:

confirm(str);

參數說明:

str:在消息對話框中要顯示的文本

返回值

返回值: Boolean值

注: 通過返回值可以判斷用戶點擊了什么按鈕

代碼示例:

<script type="text/javascript">
    var mymessage=confirm("你喜歡JavaScript嗎?");
    if(mymessage==true) {
        document.write("很好,加油!");
    } else {
        document.write("JS功能強大,要學習噢!");
    }
</script>

提問(prompt 消息對話框)

語法:

prompt(str1, str2);

參數說明:

str1:要顯示在消息對話框中的文本,不可修改
str2:文本框中的內容,可以修改

返回值

1. 點擊確定按鈕,文本框中的內容將作為函數返回值
2. 點擊取消按鈕,將返回null

代碼示例:

var myname=prompt("請輸入你的姓名:");
if(myname!=null) {
    alert("你好"+myname);
} else {
    alert("你好 my friend.");
}

打開新窗口(window.open)

語法

window.open([URL], [窗口名稱], [參數字符串])

參數說明:

URL:可選參數,在窗口中要顯示網頁的網址或路徑。
如果省略這個參數,或者它的值是空字符串,那么窗口就不顯示任何文檔。
窗口名稱:可選參數,被打開窗口的名稱。
1.該名稱由字母、數字和下劃線字符組成。
2."_top"、"_blank"、"_self"具有特殊意義的名稱。
    _blank:在新窗口顯示目標網頁
    _self:在當前窗口顯示目標網頁
    _top:框架網頁中在上部窗口中顯示目標網頁
3.相同 name 的窗口只能創建一個,要想創建多個窗口則 name 不能相同。
4.name 不能包含有空格。
參數字符串:可選參數,設置窗口參數,各參數用逗號隔開。

參數表:

例如:打開http://www.imooc.com網站,大小為300px * 200px,無菜單,無工具欄,無狀態欄,有滾動條窗口:

<script type="text/javascript">
window.open('http://www.imooc.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>

注意:運行結果考慮瀏覽器兼容問題。

關閉窗口(window.close)

用法:

widow.close(); // 關閉本窗口

或

<窗口對象>.close(); // 關閉指定的窗口

認識DOM

文檔對象模型DOM(Document Object Model)定義訪問和處理HTML文檔的標準方法。DOM 將HTML文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。

HTML文檔可以說由節點構成的集合,三種常見的DOM節點:

  1. 元素節點:<html>、<body>、<p>等都是元素節點,即標簽。

  2. 文本節點:向用戶展示的內容,如<li>...</li>中的JavaScript、DOM、CSS等文本。

  3. 屬性節點:元素屬性,如<a>標簽的鏈接屬性。

通過ID獲取元素

語法:

document.getElementById(“id”) 

結果:null或[object HTMLParagraphElement]

注:在獲取的元素是一個對象,如想對元素進行操作,我們要通過它的屬性或方法。

innerHTML 屬性

innerHTML 屬性用于獲取或替換 HTML 元素的內容。

語法:

Object.innerHTML="";

注意:

1.Object是獲取的元素對象,如通過document.getElementById("ID")獲取的元素。

2.注意書寫,innerHTML區分大小寫。

改變 HTML 樣式

HTML DOM 允許 JavaScript 改變 HTML 元素的樣式。如何改變 HTML 元素的樣式呢?

語法

Object.style.property=new style;

基本屬性表(property):

代碼示例:

<p id="pcon">Hello World!</p>
<script>
   var mychar = document.getElementById("pcon");
   mychar.style.color="red";
   mychar.style.fontSize="20";
   mychar.style.backgroundColor ="blue";
</script>

顯示和隱藏(display屬性)

網頁中經常會看到顯示和隱藏的效果,可通過display屬性來設置。

語法

Object.style.display = value

value取值:

控制類名(className 屬性)

className 屬性設置或返回元素的class 屬性。

語法:

object.className = classname

作用:

1.獲取元素的class 屬性

  1. 為網頁內的某個元素指定一個css樣式來更改該元素的外觀

樣式全部取消

removeAttribute("style")

變量

變量,存儲數據的容器。
變量名:容器---- 杯子
變量值:數據---杯子里的水

1.必須以字母、下劃線或美元符號開頭,后面可以跟字母、下劃線、美元符號和數字。如下:

正確:           
    mysum            
    _mychar         
    $numa1          
錯誤:
  6num  //開頭不能用數字
  %sum //開頭不能用除(_ $)外特殊符號,如(%  + /等)
  sum+num //開頭中間不能使用除(_ $)外特殊符號,如(%  + /等)

2.變量名區分大小寫,如:A與a是兩個不同變量。

3.不允許使用JavaScript關鍵字和保留字做變量名。

什么是事件

事件是可以被 JavaScript 偵測到的行為。

主要事件表:

Date 日期對象

返回指定的字符串首次出現的位置

stringObject.indexOf(substring, startpos)

字符串分割split()

stringObject.split(separator,limit)

提取字符串substring()

stringObject.substring(startPos,stopPos)

提取指定數目的字符substr()

stringObject.substr(startPos,length)

Array 數組對象

數組定義的方法:

  1. 定義了一個空數組:
var  數組名= new Array();
  1. 定義時指定有n個空元素的數組:
var 數組名 =new Array(n);
  1. 定義數組的時候,直接初始化數據:
var  數組名 = [<元素1>, <元素2>, <元素3>...];
我們定義myArray數組,并賦值,代碼如下:

var myArray = [2, 8, 6]; 
說明:定義了一個數組 myArray,里邊的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。

數組連接concat()

arrayObject.concat(array1,array2,...,arrayN)

計時器setInterval()

語法:

setInterval(代碼,交互時間);

參數說明:

  1. 代碼:要調用的函數或要執行的代碼串。

  2. 交互時間:周期性執行或調用表達式之間的時間間隔,以毫秒計(1s=1000ms)。

返回值:

一個可以傳遞給 clearInterval() 從而取消對"代碼"的周期性執行的值。

調用函數格式(假設有一個clock()函數):

setInterval("clock()",1000)
或
setInterval(clock,1000)

取消計時器clearInterval()

語法:

clearInterval(id_of_setInterval)

參數說明:

id_of_setInterval:由 setInterval() 返回的 ID 值。

計時器setTimeout()

setTimeout()計時器,在載入后延遲指定時間后,去執行一次表達式,僅執行一次。

語法:

setTimeout(代碼,延遲時間);

參數說明:

  1. 要調用的函數或要執行的代碼串。
  2. 延時時間:在執行代碼前需等待的時間,以毫秒為單位(1s=1000ms)。

取消計時器clearTimeout()

setTimeout()和clearTimeout()一起使用,停止計時器。

語法:

clearTimeout(id_of_setTimeout)

參數說明:

id_of_setTimeout:由 setTimeout() 返回的 ID 值。該值標識要取消的延遲執行代碼塊。

History 對象

history對象記錄了用戶曾經瀏覽過的頁面(URL),并可以實現瀏覽器前進與后退相似導航的功能。

注意:從窗口被打開的那一刻開始記錄,每個瀏覽器窗口、每個標簽頁乃至每個框架,都有自己的history對象與特定的window對象關聯

語法:

window.history.[屬性|方法]

注意:window可以省略。

History 對象屬性

History 對象方法

使用length屬性,當前窗口的瀏覽歷史總長度,代碼如下:

var HL = window.history.length;
  document.write(HL);

返回前一個瀏覽的頁面

window.history.back();
window.history.go(-1);

返回下一個瀏覽的頁面

window.history.forward();
window.history.go(1);

返回瀏覽歷史中的其他頁面

window.history.go(number);

Location對象

location用于獲取或設置窗體的URL,并且可以用于解析URL。

location.[屬性|方法]
location對象屬性圖示
location 對象屬性
location 對象方法

Navigator對象

Navigator 對象包含有關瀏覽器的信息,通常用于檢測瀏覽器與操作系統的版本。

對象屬性

userAgent

返回用戶代理頭的字符串表示(就是包括瀏覽器版本信息等的字符串)

navigator.userAgent
幾種瀏覽的user_agent,像360的兼容模式用的是IE、極速模式用的是chrom的內核

使用userAgent判斷使用的是什么瀏覽器(假設使用的是IE8瀏覽器),代碼如下:

function validB(){ 
  var u_agent = navigator.userAgent; 
  var B_name="Failed to identify the browser"; 
  if(u_agent.indexOf("Firefox")>-1){ 
      B_name="Firefox"; 
  }else if(u_agent.indexOf("Chrome")>-1){ 
      B_name="Chrome"; 
  }else if(u_agent.indexOf("MSIE")>-1&&u_agent.indexOf("Trident")>-1){ 
      B_name="IE(8-10)";  
  }
    document.write("B_name:"+B_name+"<br>");
    document.write("u_agent:"+u_agent+"<br>"); 
} 

screen對象

screen對象用于獲取用戶的屏幕信息。

window.screen.屬性
對象屬性

DOM

文檔對象模型DOM(Document Object Model)定義訪問和處理HTML文檔的標準方法。DOM 將HTML文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。

HTML文檔可以說由節點構成的集合,DOM節點有:

  1. 元素節點:上圖中<html>、<body>、<p>等都是元素節點,即標簽。

  2. 文本節點:向用戶展示的內容,如<li>...</li>中的JavaScript、DOM、CSS等文本。

  3. 屬性節點:元素屬性,如<a>標簽的鏈接屬性

節點屬性
遍歷節點樹
DOM操作

注意:前兩個是document方法。

getElementsByName()方法

返回帶有指定名稱的節點對象的集合

document.getElementsByName(name);

getElementsByTagName()方法

返回帶有指定標簽名的節點對象的集合。返回元素的順序是它們在文檔中的順序。

document.getElementsByTagName(Tagname) // Tagname是標簽的名稱,如p、a、img等標簽名

區別getElementByID,getElementsByName,getElementsByTagName

如下:

<input type="checkbox" name="hobby" id="hobby1">  音樂

input標簽就像人的類別。

name屬性就像人的姓名。

id屬性就像人的身份證。

方法總結

getAttribute()方法

通過元素節點的屬性名稱獲取屬性的值。

elementNode.getAttribute(name)

//1. elementNode:使用getElementById()、getElementsByTagName()等方法,獲取到的元素節點。
//2. name:要想查詢的元素節點的屬性名字

setAttribute()方法

setAttribute() 方法增加一個指定名稱和值的新屬性,或者把一個現有的屬性設定為指定的值。

elementNode.setAttribute(name,value)
//1.name: 要設置的屬性名。
//2.value: 要設置的屬性值。

節點屬性

在文檔對象模型 (DOM) 中,每個節點都是一個對象。DOM 節點有三個重要的屬性 :

  1. nodeName : 節點的名稱

  2. nodeValue :節點的值

  3. nodeType :節點的類型

一、nodeName 屬性: 節點的名稱,是只讀的。

  1. 元素節點的 nodeName 與標簽名相同
  2. 屬性節點的 nodeName 是屬性的名稱
  3. 文本節點的 nodeName 永遠是 #text
  4. 文檔節點的 nodeName 永遠是 #document

二、nodeValue 屬性:節點的值

  1. 元素節點的 nodeValue 是 undefined 或 null
  2. 文本節點的 nodeValue 是文本自身
  3. 屬性節點的 nodeValue 是屬性的值

三、nodeType 屬性: 節點的類型,是只讀的。以下常用的幾種結點類型:

元素類型 節點類型
元素 1
屬性 2
文本 3
注釋 8
文檔 9

訪問子節點childNodes

訪問選定元素節點下的所有子節點的列表,返回的值可以看作是一個數組,他具有length屬性。

elementNode.childNodes

注意:如果選定的節點沒有子節點,則該屬性返回不包含節點的 NodeList。

訪問子節點的第一和最后項

node.firstChild
node. lastChild

訪問父節點parentNode

elementNode.parentNode

注意:父節點只能有一個。

訪問兄弟節點

  1. nextSibling 屬性可返回某個節點之后緊跟的節點(處于同一樹層級中)。
nodeObject.nextSibling
  1. previousSibling 屬性可返回某個節點之前緊跟的節點(處于同一樹層級中)。
nodeObject.previousSibling  

說明:如果無此節點,則該屬性返回 null。

注意: 兩個屬性獲取的是節點。Internet Explorer 會忽略節點間生成的空白文本節點(例如,換行符號),而其它瀏覽器不會忽略。

解決問題方法:

判斷節點nodeType是否為1, 如是為元素節點,跳過。

function get_nextSibling(n)
{
var x=n.nextSibling;
while (x && x.nodeType!=1)
  {
  x=x.nextSibling;
  }
return x;
}

function get_previousSibling(n)
{
var x=n.previousSibling;
while (x && x.nodeType!=1)
  {
  x=x.previousSibling;
  }
return x;
}

插入節點appendChild()

在指定節點的最后一個子節點列表之后添加一個新的子節點。

appendChild(newnode)
<ul id="test">
  <li>JavaScript</li>
  <li>HTML</li>
</ul> 
 
<script type="text/javascript">
  var otest = document.getElementById("test");  
  var newnode = document.createElement("li");
  newnode.innerHTML="PHP";
  otest.appendChild(newnode);
</script>

插入節點insertBefore()

insertBefore(newnode,node);
//newnode: 要插入的新節點。
//node: 指定此節點前插入節點。
<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 
 
<script type="text/javascript">
  var otest = document.getElementById("test");  
  var newnode = document.createElement("li");
  newnode.innerHTML = "PHP";
  otest.insertBefore(newnode, otest.childNodes[1]);
</script> 

刪除節點removeChild()

removeChild() 方法從子節點列表中刪除某個節點。如刪除成功,此方法可返回被刪除的節點,如失敗,則返回 NULL。

nodeObject.removeChild(node)
<script type="text/javascript">
function clearText() {
  var content=document.getElementById("content");
  for(var i=content.childNodes.length-1;i>=0;i--){
      var dnode = content.childNodes[i];
      var x = content.removeChild(dnode);
      document.write(x.innerHTML+"<br>");
  }
}
</script>

<button onclick="clearText()">清除節點內容</button>

注意: 把刪除的子節點賦值給 x,這個子節點不在DOM樹中,但是還存在內存中,可通過 x 操作。

如果要完全刪除對象,給 x 賦 null 值

替換元素節點replaceChild()

node.replaceChild (newnode,oldnew ) 

注意:

  1. 當 oldnode 被替換時,所有與之相關的屬性內容都將被移除。
  2. newnode 必須先被建立。

創建元素節點createElement

document.createElement(tagName)
<script type="text/javascript">
   var body = document.body; 
   var input = document.createElement("input");  
   input.type = "button";  
   input.value = "創建一個按鈕";  
   body.appendChild(input);  
 </script>  

創建文本節點createTextNode

document.createTextNode(data)
//data : 字符串值,可規定此節點的文本

瀏覽器窗口可視區域大小

一、對于IE9+、Chrome、Firefox、Opera 以及 Safari:

? window.innerHeight - 瀏覽器窗口的內部高度

? window.innerWidth - 瀏覽器窗口的內部寬度

二、對于 Internet Explorer 8、7、6、5:

? document.documentElement.clientHeight表示HTML文檔所在窗口的當前高度。

? document.documentElement.clientWidth表示HTML文檔所在窗口的當前寬度。

或者

Document對象的body屬性對應HTML文檔的<body>標簽

? document.body.clientHeight

? document.body.clientWidth

在不同瀏覽器都實用的 JavaScript 方案:

var w= document.documentElement.clientWidth
      || document.body.clientWidth;
var h= document.documentElement.clientHeight
      || document.body.clientHeight;

網頁尺寸scrollHeight

scrollHeight和scrollWidth,獲取網頁內容高度和寬度。

一、針對IE、Opera:

scrollHeight 是網頁內容實際高度,可以小于 clientHeight。

二、針對NS、FF:

scrollHeight 是網頁內容高度,不過最小值是 clientHeight。也就是說網頁內容實際高度小于 clientHeight 時,scrollHeight 返回 clientHeight 。

三、瀏覽器兼容性

var w=document.documentElement.scrollWidth
   || document.body.scrollWidth;
var h=document.documentElement.scrollHeight
   || document.body.scrollHeight;

網頁尺寸offsetHeight

offsetHeight和offsetWidth,獲取網頁內容高度和寬度(包括滾動條等邊線,會隨窗口的顯示大小改變)。

一、值

offsetHeight = clientHeight + 滾動條 + 邊框。

二、瀏覽器兼容性

var w= document.documentElement.offsetWidth
    || document.body.offsetWidth;
var h= document.documentElement.offsetHeight
    || document.body.offsetHeight;

網頁卷去的距離與偏移量

scrollLeft:設置或獲取位于給定對象左邊界與窗口中目前可見內容的最左端之間的距離 ,即左邊灰色的內容。

scrollTop:設置或獲取位于對象最頂端與窗口中可見內容的最頂端之間的距離 ,即上邊灰色的內容。

offsetLeft:獲取指定對象相對于版面或由 offsetParent 屬性指定的父坐標的計算左側位置 。

offsetTop:獲取指定對象相對于版面或由 offsetParent 屬性指定的父坐標的計算頂端位置 。

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

推薦閱讀更多精彩內容

  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,790評論 0 8
  • 個人博客:https://yeaseonzhang.github.io 花了半個多月的時間,終于又把“JS紅寶書”...
    Yeaseon閱讀 11,564評論 9 52
  • 簡介網絡瀏覽器很可能是使用最廣的軟件。在這篇入門文章中,我將會介紹它們的幕后工作原理。我們會了解到,從您在地址欄輸...
    wengjq閱讀 2,060評論 2 15
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態效果(如:下拉菜單、圖片輪播、信息滾動等)2.實現...
    mo默22閱讀 1,318評論 0 5
  • 我的家到老公家 成為薛家媳婦兒的第一個新年 2015年也是在這里過年,不同的是那個時候我是準媳婦兒。 有著眾多的約...
    不辣的媽睢燃閱讀 363評論 0 5