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”;


可能出什么问题了,我该如何解决?

最佳答案

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

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

}


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

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


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

关于javascript - 函数给出错误translationMap未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28950051/

10-12 07:35