函数给出错误translationMap未定义

时间:2015-03-09 19:17:01

标签: javascript function

window.onload = function(){
  function translationMap(a,b){
		ctx.translate(a,b);
	}
	
	function majMap(sens){
		var cpt;
		switch(sens){
			case 1:
				for(cpt=0;cpt<16;cpt++){
					var horloge = setInterval('translationMap(0,2);' , 100);
				}
				clearInterval(horloge);
				break;
			case 2:
				for(cpt=0;cpt<16;cpt++){
					var horloge = setInterval('translationMap(0,-2);' , 100);
				}
				clearInterval(horloge);
				break;
			case 3:
				for(cpt=0;cpt<16;cpt++){
					var horloge = setInterval('translationMap(-2,0);' , 100);
				}
				clearInterval(horloge);
				break;
			case 4:
				for(cpt=0;cpt<16;cpt++){
					var horloge = setInterval("translationMap(2,0);" , 100);
				}
				clearInterval(horloge);
				break;
		}
	}
}

但是当我执行majMap()时;它告诉我:

  

“未捕获的ReferenceError:未定义translationMap”;

可能出现什么问题,如何解决?

1 个答案:

答案 0 :(得分:2)

您正在将字符串传递给setInterval,这将要求所有引用的代码都在全局范围内(window)。 translationMap仅存在于window.load的范围内。将translationMap移到此方法之外。

function translationMap() {}
window.onload = function(){

}

此外,我建议不要为setInterval使用字符串,而是实际传递函数:

setInterval(function () { translationMap() }, 100);

这也应该有效,并且比使用javascript使用eval更好的解决方案。