2017-04-05 79 views
1

我使用JS的新類語法。當我按下按鈕時,我想調用一個類的方法。爲了實現這一點,我將此方法設置爲靜態。類未定義onClick事件

class NoteController { // The controller class 
    constructor() { // Initialization 
     // ... 
    } 

    static CreateNote() { // The method to call - static 
     // .... 
    } 
} 




<!DOCTYPE html> 
<html> 

<head> 

    // .... 
    <script src="NoteController.js"></script> // Link the js file to the html file 

</head> 

<body> 

    // .... 
    <button type="button" id="btnCreateNote" onclick="NoteController.CreateNote()">Create</button> // call the method 

</body> 

</html> 

當我點擊按鈕,它說,NoteController沒有定義。我真的不明白,那裏有什麼問題。

我的項目文件夾中的圖片:

enter image description here

也許這會有所幫助。

+0

NoteController.js是否在您的HTML頁面是相同的文件夾?你得到什麼確切的錯誤?我敢打賭我的錢沒有被加載到HTML頁面上。 – ProgrammerV5

+0

我剛剛更新了我的照片:) – peterHasemann

+0

添加了一個響應和一個工作示例。沒有像在你的結構中那樣在文件中分開,但我希望它有助於理解你的工作代碼中缺少什麼。 – ProgrammerV5

回答

2

編輯: 修正,使之靜:

<script> 
class NoteController { // The controller class 
    constructor() { // Initialization 
     // ... 
     alert('constructor called'); 
    } 

    static CreateNote() { // The method to call - static 
     // .... 
     alert('create note'); 
    } 
} 
//var nc=new NoteController(); 
//console.log(nc); 
</script> 


<button type="button" id="btnCreateNote" onclick="NoteController.CreateNote()">Create</button> // call the method 

JSFiddle

這是你的代碼的工作示例:

<script> 
class NoteController { // The controller class 
    constructor() { // Initialization 
     // ... 
     alert('constructor called'); 
    } 

    CreateNote() { // The method to call - static 
     // .... 
     alert('create note'); 
    } 
} 
var nc=new NoteController(); 
console.log(nc); 
</script> 


<button type="button" id="btnCreateNote" onclick="nc.CreateNote()">Create</button> // call the method 

工作JSFiddle

+0

該方法應該是靜態的,調用時沒有NoteController的實例。 –

+0

我的不好,用靜態方法增加了一個新例子。 – ProgrammerV5

+0

我正在測試同樣的事情,但如果您將JS代碼移動到jsfiddle中的JS區域,它將停止工作,不知道爲什麼。檢查[這個小提琴](https://jsfiddle.net/69b06hvj) –

1

由於缺乏有關NoteController.js的信息,我假設您的NoteController.js具有以下代碼。

function NoteController() 
    { 
    //variables 
    //sub functions 
    function CreateNote() 
    { 
     //code 
    } 
    } 

所以現在你需要創建函數的對象並調用它。

<script src="NoteController.js"></script> 
<script> 
var _noteController=new NoteController(); 
</script> 

<body> 
    <button type="button" id="btnCreateNote" 
onclick="_noteController.CreateNote()">Create</button> 
</body> 
+0

不,如上所述,這是一個完整的類:)它是一個相對較新的語法 – peterHasemann

+0

只要檢查按鈕元素,並檢查什麼是onclick的綁定?以及如何在html呈現的頁面上定義NoteController。 –

1

將您的課程包含在<script>標記中,以便瀏覽器識別JavaScript代碼並執行它!