2016-12-03 82 views
2

我有一個博客鏈接的外部JavaScript文件。我想改變它的價值。 (用JavaScript指派CSS值)JavaScript執行的優先級是什麼?

是否有可能運行頭部或身體相同的代碼與JavaScript的分配不同的值? 例如,CSS給外部CSS樣式表賦予最小優先級,並賦予文件內部給定的屬性。

JavaScript是否有像這樣的優先系統?

+1

我認爲CSS優先選擇最具體的選擇器 – Grezzo

+0

如果你的問題已被回答,你現在應該接受這些答案之一,或者解釋你需要知道更多的內容 – Grezzo

+1

@Grezzo對不起,我找不到它,但現在我接受。 – Rajesh

回答

2

這不是重點,但執行順序。 Javascript沒有涉及任何優先級,或者沒有像CSS中的特殊性那樣的東西,甚至不需要它。

Javascript代碼是executed in the order it is included in the HTML document不管它是行內或外部JS,雖然events使事情變得有點複雜,我們可以安排代碼稍後某些事件像window「加載」事件中運行。所以很容易確保代碼在他們之後運行,但是如果他們說從onload事件處理程序改變樣式,那麼您必須將代碼添加到相同的event本身。 (至少在規範中確保了DOM3中的事件處理程序的順序)

但是,您是否嘗試過在CSS中使用!important,它可以重寫內聯樣式,並且在某些情況下適用於此類。但是,如果你能夠使用JavaScript很好地移除樣式。

0

Javascript代碼在包含點執行。

HTML解析器

  • 解析標籤
  • 發現的JavaScript
  • (可選)下載JavaScript的
  • 停止解析HTML
    • 解析JS
    • excecute JS
  • 簡歷解析HTML
  • 認定的JavaScript
  • (可選)下載JavaScript的
  • 停止解析HTML
    • 解析JS
    • excecute JS
  • 簡歷解析HTML

當心這樣的事情掛鉤本身domready中的事件代碼,只有被解僱時,文件加載完成或其他事件,然後將其歸結爲在順序對其進行註冊。

也有類似的事情和延遲異步,這將使中加載/ parralel執行,以解析(細節和supporr每個瀏覽器有所不同)。 但在大多數情況下,谷歌博客中沒有大量修改過的模板,我所佈置的隱私將會發生

+0

是啊,請原諒我解答這個問題,而不會泄露異常,推遲,通過腳本包含腳本,通過ajax請求加載的腳本和自我結合的JavaScript過多的問題。我嘗試着迎合提問者的理解水平。 – Tschallacka

+0

完全有可能做到這一點,而沒有指出事實,事實上,事實上,更細微。 (現在的確如此。)完全有可能以非惡劣的方式迴應非常友好的評論。 –

0

JS在加載後立即執行,因此將腳本放在他們之後(或者在連接到外部文件之後,它內聯),它將能夠改變第一個腳本中的內容,但它可能已經被執行了。

您可能能夠覆蓋它的部分,如果他們的腳本等待運行的東西之前,像DOM ready事件

-1
if you have tow function with same name, one in head and another one in an external .js file and both of them write a value in <a>, the result will be from the internal one, let's look at an example 

<html> 
<head> 
<script src="myscripts.js"></script> 
<script type="text/javascript"> 
function test(){ 
document.getElementById("tester").innerHTML="Internal";  
} 
</script> 
</head> 
<body onload="test()"> 
    <a id="tester"></a> 
</div> 
</body> 
</html> 
------------------------------------- 
in myscripts.js 
function test(){ 
document.getElementById("tester").innerHTML="external";  
} 
------------------------------------- 
when the page run it shows: 
Internal 
+0

**錯誤**無論加載什麼函數定義_last_是在加載body時運行的函數定義。在HTML中交換腳本元素的順序(在內聯腳本之後加載外部腳本),然後在瀏覽器窗口中看到「外部」 – Grezzo