1. 程式人生 > >HTML中呼叫JavaScript的幾種情況和規範寫法

HTML中呼叫JavaScript的幾種情況和規範寫法

JavaScript執行在html中,引用有幾種方式?

我知道的方法有3種:

第一種:外部引用遠端JavaScript檔案。如<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>(相對路勁)或者是<script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>(絕對路勁);

另外一種:直接用寫在頁面上,如:

1

2

3

4

5

<script type=

"text/javascript">

 

  document.write('這裡是一行JavaScript程式碼1');

 

</script>

第三種:在JavaScript程式碼中引用外部js:

1

2

3

4

5

6

7

8

<script>

  window.onload = function(){

    var script = document.createElement("script");

    script.setAttribute("type"

,"text/javascript");

    script.src = "http://common.cnblogs.com/script/jquery.js";

    document.getElementsByTagName("head")[0].appendChild(script);  

  }

</script>

  

2.JavaScript通常寫在頁面的什麼位置?

javascript的書寫位置大致有3個地方:

第一個地方:是head頭部,比方:

1

2

3

4

5

6

7

8

9

10

11

12

13

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>javascript引用方式</title>

<script type="text/javascript" src="http://common.cnblogs.com/script/jquery.js"></script>

<script>

    window.onload = function(){

        var script = document.createElement("script");

        script.setAttribute("type","text/javascript");

        script.src = "http://common.cnblogs.com/script/index.js";

        document.getElementsByTagName("head")[0].appendChild(script);  

    }

</script>

</head>

第二個地方:body的不論什麼位置,如:

1

2

3

4

5

6

7

8

9

10

11

12

<body>

    <script type="text/javascript" src="http://common.cnblogs.com/script/jquery.js"></script>

    <p>這裡是一段文字!</p>

       <script>

          window.onload = function(){

         var script = document.createElement("script");

        script.setAttribute("type","text/javascript");

        script.src = "http://common.cnblogs.com/script/jquery.js";

        document.getElementsByTagName("head")[0].appendChild(script);  

      }

      </script>

</body>

第三個地方:以事件的形式寫在標籤上,如:

1

<p onClick="javascript:alert('叫你點,你就點啊。')">點我點我。</p>

  

3.改變js載入順序的方法有什麼?

JavaScript是有載入順序的,不同的載入順序能夠會導致不同的結果,舉個栗子:

1

2

3

4

5

6

7

8

9

10

11

<script>

      var txt = document.getElementById("txt");

  alert(txt.innerHTML);

  </script>

  <div id="txt">我是一段文字,你不能找到我。</div>

   

  <div id="val">我也是一段文字。你能找到我。</div>

  <script>

      var txt = document.getElementById("val");

  alert(txt.innerHTML);

  </script>

第一段js執行會出錯,由於html程式碼執行是至上而下載入的,第一段JavaScript程式碼先執行,才執行以下的html程式碼,所以根本就找不到該DOM節點,就會報錯,假設html先執行,在執行JavaScript程式碼,就像第二段,就能夠執行成功!當然,我不是說一定要先執行html程式碼。在執行JavaScript程式碼。這個要依情況而定。

再舉一個栗子:

1

2

3

4

<script>

$(".calculator").fancybox();

</script>  

<script type="text/javascript" src="../js/jquery.fancybox.js"></script>

上面的fancybox外掛假設像上面這種載入順序去載入的話。一定是不能執行的。由於程式碼執行所依賴的js庫是後面執行的,這裡要講的內容主要是想說明,假設是在使用一個外掛。依賴某個js檔案。一定要在前面先執行。無論是放在head頭部,還是body中。

上面的樣例說明一點。不同的js執行順序,執行的內容是不一樣的。所以改變js檔案的位置。就能夠改變js的載入順序(注:這裡指的是單獨的JavaScript檔案或片段。不包括函式的順序)。

2015.11.05補充:感謝@橘色大耳朵貓 同學的提醒,這裡的js的載入順序指的是js檔案在頁面上的載入順序,不是js程式的載入順序,先理解這一點。假設說行內js事件程式碼也算是一個獨立的js檔案的話(也能夠這麼理解。畢竟能夠獨立執行),那這裡的載入順序也是自上而下的,和其它的檔案的載入順序是一樣的,可是有一個很特殊的事件例外。那就是“onload”事件,onload 事件會在頁面或影象載入完畢後馬上發生(w3school上的解釋),好難理解。通俗的講就是,這個事件是在頁面上的所以內容載入完畢了。我才來執行這個函式。無論我這個時間定義在哪裡都一樣。沒有順序而言(本來嘛,我反正都是最後一個執行的,位置對於我來說已經沒有意義了);除了onload,其它的事件都是依照順序執行的。

 

可能有人會問了,唉,不正確啊,假設我是onclick事件,我點選之後。可能下一行執行的函式在我事件的前面呢,這不是改變了js執行的順序嗎?這怎麼解釋呢?

假設你還是有這個疑惑,那請注意我在上一句描寫敘述上說的是“改變了js的執行順序”,是執行順序,不是載入順序。執行順序是程式內,載入順序是檔案之間的,比方說點選事件,你點選了。那js就已經經歷了載入,然後運行了,假設你還是不理解,我就給你舉一個現實生活中的樣例:

我手上有4個盒子。盒子裡面有不同的東西,每一個盒子都有編號(1,2,3,4),如今我把這4個盒子依次在桌子上,編號順序隨機,然後從左到右依次看一遍,盒子是開的,我就把東西拿出來(這裡表示js自己主動執行)。假設是關著的,就看下一個(這裡表示是須要事件來出發的。如開啟盒子這個動作),直到最後一個盒子看完,整個就完了。那盒子的順序就是檢視盒子的順序,跟編號沒關係(這裡說的是檔案的名字),onclick這種事件就是盒子我已經過了一遍,如今有沒有開啟的盒子。我如今打開了。就是運行了這個事件。然而前面我們說了,盒子已經過了一遍,所以這個動作就不涉及整個過場順序問題了。那onload是怎麼回事呢,就是我有一個盒子放在一邊,等其它盒子都看了,再看這個盒子(就是最後執行這個事件,onload是自己主動觸發執行的),理解了嗎?自己擺一擺。要是還不理解,那就去面壁思考吧!

 

 

 

4.type屬性都有哪些經常使用的值?代表什麼意思?

開啟Dreamweaver(我比較喜歡用這個編輯器,習慣了他給的提示。別說我low哦),在<script>上打一個type,會有非常多type屬性,我們把他寫下來。看看都有哪些:

application/ecmascript   application/javascript  application/x-ecmascript  application/x-javascript  text/ecmascript  text/javascript  text/jscript  text/livescript  text/tcl  text/x-ecmascript  text/x-javascript

oh。mygod!

這麼多!嚇死寶寶了!

 

在<link>上面打一下:

text/css  text/javascript  

還好僅僅有2個!

type屬性在js上表示指令碼的型別,即MIME型別,在link上表示疊層樣式表的MIME型別,經常使用的就是2種(其它的不經常使用,也不知道是什麼意思。用在什麼情況。哪位大神幫忙科普一下):

text/css (css文字。告訴瀏覽器是載入css樣式)

text/javascript  (JavaScript文字。告訴瀏覽器載入js程式碼)

貌似解釋的有點牽強,呵呵!

 

5.除了type屬性還有其它的什麼屬性?

再次開啟Dreamweaver,給的提示有這幾個:async,defer,language,runat。src

async:定義指令碼是否非同步執行。值為:async;

defer:指示指令碼不會生成不論什麼文件內容。瀏覽器可繼續解析並繪製頁面。意思就是等文件載入完成了再執行此js,要是想深入瞭解這個屬性,能夠參考這裡。假設你英文比較好,能夠看這裡

 

language:規定指令碼的語言。如今使用type來替代了;

runat:其值為server。表示是在伺服器上執行此程式碼。client不執行,不經常使用;

src:指外部指令碼檔案的引用路徑

 

6.js中經常使用的輸出方式?

js的輸出方式大概有以下幾種:

1

2

3

4

5

6

7

8

9

<div id="demo"></div>

  <script>

  //第一種

      document.write("<p>你在幹嘛。你媽媽叫你回家吃飯!</p>");

  //另外一種

  document.getElementById("demo").innerHTML = "我再玩會,我媽媽飯還沒熟呢!";

  //第三種。提示框

  alert("誰家能叫我吃飯啊!

 

");

  </script>