下面的代码工作。JavaScript的画布不起作用onchange事件
因为我想做一些onchange我需要包装我的函数与onchange事件并检查是否复选框被选中。
但我不明白为什么这不符合上述2行。 我在Chrome开发者控制台中没有收到任何错误。
再次我的代码工作,如果我删除上面的2行,但它不起作用,如果我添加它们,我不明白为什么。
全码:
if(window.addEventListener) {
window.addEventListener('load', function() {
...
// Initialization sequence.
function init() {
canvas = document.getElementById('imageView');
tool = new tool_pencil();
canvas.addEventListener('mousedown', ev_canvas, false);
canvas.addEventListener('mousemove', ev_canvas, false);
canvas.addEventListener('mouseup', ev_canvas, false);
}
function tool_pencil() {
var tool = this;
this.started = false;
checkboxPencil.onchange = function() {
if(checkboxPencil.checked) {
console.log("Pencil checked");
this.mousedown = function (ev) {
context.beginPath();
context.moveTo(ev._x, ev._y);
tool.started = true;
};
this.mousemove = function (ev) {
if (tool.started) {
context.lineTo(ev._x, ev._y);
context.stroke();
}
};
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
}
};
} else {
console.log("Pencil not checked");
}
}
}
美丽非常感谢你喜欢这个'在window.onload = init;方法的'代替这个:'if(window.addEventListener){ window.addEventListener('load',function(){'如果是的话为什么?:) – Micheasl
@Micheasl虽然,我不介意使用它们中的任何一个(只要它是肯定的清楚正在做什么),我更喜欢'addEventListener'。你可以参考[这里](http://stackoverflow.com/a/6348533/7750640)以获得更好的解释:) –