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>
|