在动态创建按钮内部调用函数

时间:2014-01-13 19:25:30

标签: javascript

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事件中调用函数? 谢谢。

1 个答案:

答案 0 :(得分:4)

您需要保留要在回调中使用的原始方法的this值,因为回调可以更改this的含义

var self = this;
element.onclick=function()
{
    self.context.clearRect(0,0,300,300);
}