2016-09-02 62 views
1

我有一個項目有兩個同名的文件,data.php和data.js.我想從list.js中運行data.js中的函數,這是項目中的另一個文件。從另一個沒有eval的JavaScript文件調用一個函數()

下面的代碼顯示了我嘗試過的三種不同的嘗試,其中沒有一個能夠工作。第一個拋出一個錯誤,說data.php中的conditionTemplate沒有函數。另外兩個拋出錯誤Uncaught TypeError:無法讀取未定義的屬性'condtionTemplate'。

list.js

if (this.filter == "correct") { 
    window["condtionTemplate"](true); 
    window["data"]["condtionTemplate"](true); 
    window["data.js"]["condtionTemplate"](true); 
} 

這是我試圖去裏面data.js

data.js

list = new listFiler(); 
list.prototype.condtionTemplate = function(status) { 
    if (status) { 
     main_buttons.enabled("next", false); 
    } else { 
     main_buttons.enabled("back", true); 
    } 
} 

data.php功能

<body>  
    <script src="javascript/list.js?1" type="text/javascript"></script> 
    <script src="javascript/data.js?1" type="text/javascript"></script> 
</body> 
+0

你是否在某處加載data.js? –

+0

什麼是'list'?類型,而不是文件。 – Thomas

+0

@ thomas更新了這個問題。 'listFilter'是第一個代碼塊是 – Bish25

回答

1

首先改變負載以

<script src="javascript/data.js?1" type="text/javascript"></script> 
<script src="javascript/list.js?1" type="text/javascript"></script> 

添加一個原型功能listFiler

listFiler.prototype.condtionTemplate = function(status) { 
    if (status) { 
     main_buttons.enabled("next", false); 
    } else { 
     main_buttons.enabled("back", true); 
    } 
}; 

使用實例

var list = new listFiler(); 

與condtionTemplate。

if (this.filter == "correct") { 
    list.condtionTemplate(true); 
} 
+1

謝謝,我想我試圖過度複雜的事情。 – Bish25

0

HTML:

<script src="data.js" /> 
<script src="list.js" /> 
<script> 
    condtionTemplate() ... 
</script> 
+0

感謝您的回答。這可以工作,但不是在這種情況下。我需要從list.js文件運行conditionTemplate。 – Bish25

+0

那麼沒有辦法做到這一點,抱歉。 –

+0

它的作品,如果我使用eval(),但從研究這不是好的做法 – Bish25

相關問題