我試圖訪問一個函數使用this
爲一個javascript onclick
事件。目前我只能使用this
返回dom節點。是否有可能擴大這個dom節點以外的範圍?我想調用函數toggleLayer
。使用Dojo 1.7+javascript的onclick事件的'this'的範圍
toggleLayer: function(){
console.log('toggled layer!!!');
},
_init: function() {
this.domNode.innerHTML = 'Click <a href="#"onclick="this.toggleLayer()">Here</a> to toggle layer';
}
編輯 - 這是我從Quentins答案想出瞭解決辦法:
toggleLayer: function() {
console.log('toggled layer!!!');
},
_init: function() {
this.domNode.innerHTML = ''; // Erase existing content
this.domNode.appendChild(document.createTextNode('Click '));
var link = document.createElement('a');
link.appendChild(document.createTextNode('Here'));
link.href = "#";
link.addEventListener('click', this.toggleLayer.bind(this));
this.domNode.appendChild(link);
this.domNode.appendChild(document.createTextNode(' to toggle layer'));
}
這是可能的,但不能用'onclick'屬性。使用[addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener),並結合'bind' – hindmost