以下代码适用于Firefox,但在Chrome上崩溃,出现以下错误:未捕获TypeError:属性' pos'对象[object Object]不是函数
这是代码,带有注释:
var CantidadMenu = $('div[class^=container_menu_]').length;
var position = $("#menu_unidades").position();
var IzAdd = 0;
var w = $("#menu_unidades").width();
var h = $("#menu_unidades").height();
for (i=0;i<CantidadMenu;i++){
var pos = 'pos'+(i+1); //I create a variable that will hold a string like: pos1,pos2...
IzAdd = IzAdd+25;
function pos(div){ //on this line I use the variable I created, which crashes on Chrome
var estilo1 = $(div).css({'left':IzAdd+25,'top':position.top+(IzAdd-25)});
return estilo1;
}
pos('.container_menu_'+(i+1));
$('.container_menu_'+(i+1)).css({'z-index':297+i,'width':w,'height':h});
}
答案 0 :(得分:2)
在这里定义一个名为pos的函数:
function pos(div){ //on this line I use the variable I created, which crashes on Chrome
var estilo1 = $(div).css({'left':IzAdd+25,'top':position.top+(IzAdd-25)});
return estilo1;
}
console.log(pos) // function ....
在这里用字符串覆盖它:
var pos = 'pos'+(i+1);
console.log(pos) // string....
您应该将函数或字符串命名为其他内容。
PS:我知道在你的代码中顺序是相反的,但是函数声明被提升到作用域的顶部,所以JS解释器按照我写入的顺序“看到”它们:first function,then the stringPSS:崩溃实际上是在这一行:
pos('.container_menu_'+(i+1));
答案 1 :(得分:1)
function pos(div)
与var pos = function(div)...
相同(除了前者在解析时定义,后者在运行时定义,但这与您的代码无关),所以如果您预期例如,通过定义pos = 'pos1';
,您将function pos(div)
变为function pos1(div)
,将不会。
它只会覆盖pos
变量,它将不再是字符串,而是一个函数。
要修复代码,请在代码顶部编写一个函数,在for循环之外,向其添加另一个参数(IzAdd
),并确保正确修复函数调用。
该功能应如下所示:
function pos(div, IzAdd){
return $(div).css({'left':IzAdd+25,'top':position.top+(IzAdd-25)});
}