函数给出错误转换未定义映射

Function gives error translationMap is not defined

本文关键字:未定义 映射 转换 错误 出错 函数      更新时间:2023-09-26

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()时,它告诉我:

"未捕获的引用错误:未定义翻译映射";

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

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

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

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

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

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