2016-09-21 63 views
0

我有這個在我的HTML文件:的JavaScript功能相互依存

<script src="/file.js"/> 
<script> 
func_from_file(); 
main_func(){ 
    alert("some alert"); 
} 
</script> 

這在我file.js:

func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

所以我在HTML文件中這個腳本,從file.js調用函數,並在file.js內部有一個腳本,它從html文件中調用函數。如何避免reference error

P.S.我無法拼接腳本,不能將HTML頁面中的腳本放入一些file.js之內,並且我無法更改加載隊列。請幫幫我。

編輯:

我會努力糾正我的問題。

HTML頁面:

<head> 
<script src="/file.js"/> 
<script> 
func_from_file(); 
start(){ 
    main_func(){ 
     alert("some alert"); 
    } 
} 
</script> 
</head> 
<body> 
<button onclick="start()"/> 
</body> 

而且file.js:

func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

現在是真正的代碼。我忘了一半。

+0

什麼是確切的文件夾結構之前,加載網頁?這個'file.js'位於'file.html'的哪個位置? – Grey

+0

我不明白你爲什麼不能將'main_func()'添加到file.js,雖然看起來效率很低 – Grey

+0

循環依賴是一個問題,是的。停止創建循環依賴。 – deceze

回答

-1

你可以把裏面的window.onload file.js main_func()的調用=函數(){}

這樣它會調用一次,整個頁面被加載

或將main_func( )調用javascript的setTimeout函數內的file.js,並根據您的方便放置超時。

1

我認爲你的問題不在於功能是錯誤的,但是,你聲明腳本標記錯誤,試試這個:

HTML:

<script src="folder/structure/here/file.js"></script> 
<script> 
func_from_file(); 
main_func(){ 
    alert("some alert"); 
} 
</script> 

JS:

func_from_file(){ 
    alert("some alert from file"); 
} 

$(document).ready(function() { 
    main_func(); 
}); 

編輯: 這就是我現在得到的,我想這就是你想要的?

HTML:

<html> 
    <head> 
    <script src="file.js"></script> 
    <script> 
    func_from_file(); 
     function main_func(){ 
      alert("some alert"); 
     } 
    </script> 
    </head> 
    <body> 
    <button onclick="main_func()"/> 
    </body> 
</html> 

JS:

function func_from_file(){ 
    alert("some alert from file"); 
} 
main_func(); 

,或者如果你想顯示main_func()

function func_from_file(){ 
    alert("some alert from file"); 
} 

$(document).ready(function() { 
    main_func(); 
}); 
+0

我忘了說我打電話main_func()不是在頁面加載(或準備),但在按鈕onclick。 –

+0

@elpax然後忘了'$(document).ready',你確定你的'file.js'鏈接正確嗎? – Grey

+0

我確定。我需要從JS文件調用HTML頁面中的函數,但只能在HTML頁面調用js文件後調用。 –