2016-11-25 50 views
1

我有第一個原型函數的日曆構造函數和兩個原型函數我創建div元素並創建它的屬性ondragstart,我想調用另一個原型函數在它的第二個參數var that = this; that.drag(event),但是當它呈現時顯示<div ondragstart="that.drag(event)">控制檯給出錯誤that is not function。在這種情況下我怎樣才能調用原型函數?請用例子來解釋,謝謝。如何在某個事件的HTML元素中調用原型函數?

calendar.prototype.tbl = function(){ 
var that = this; 
var evDiv = document.createElement('div');  
evDiv.setAttribute('draggable', 'true'); 
evDiv.setAttribute('ondragstart', 'that.drag(event)'); 
} 

calendar.prototype.drag = function(ev){ 
    ev.dataTransfer.setData("text", ev.target.id); 
} 
+2

不要使用'setAttribute'。不要使用事件偵聽器屬性。不要在字符串中使用代碼。 – Bergi

+0

請勿使用事件處理程序(以'on'開頭的前綴)。使用事件監聽器。 – Oriol

回答

1

使用addEventListener

calendar.prototype.tbl = function() { 
    var that = this; 
    var evDiv = document.createElement('div'); 

    evDiv.draggable = true; 
    evDiv.addEventListener('dragstart', that.drag); 
}; 

calendar.prototype.drag = function(ev) { 
    ev.dataTransfer.setData("text", ev.target.id); 
}; 
相關問題