HY,
我正在尝试执行一个函数,更准确地说是在动态创建的按钮中清除用于重绘的画布。 addButton函数在接口上现有按钮的click事件内调用。代码就是这样:
function addButton()
{
var canvas=document.getElementById('CrosswordSpace');
this.context=canvas.getContext("2d");
var parent = document.getElementsByName('gen')[0].parentNode;
var element=document.createElement("input");
element.type='button';
element.name='buttonAnswer';
element.value='Show answer';
element.onclick=function()
{
this.context.clearRect(0,0,300,300);
}
parent.appendChild(element);
this.onclick=null;
}
错误说'无法调用方法clearRect of undefined。 如果你问为什么我有this.onclick = null,那是因为在使用这个语句之前,每次按下主按钮时动态创建的按钮都会复制自己,我不希望这样。 无论如何,如果我在内部动态创建按钮调用,任何其他功能 其他地方(测试过)似乎不再有效了。 总之,问题是,如何在动态创建按钮的onclick事件中调用函数? 谢谢。
答案 0 :(得分:4)
您需要保留要在回调中使用的原始方法的this
值,因为回调可以更改this
的含义
var self = this;
element.onclick=function()
{
self.context.clearRect(0,0,300,300);
}