У меня есть следующий код JavaScript:передавая анонимную функцию в качестве параметра в JavaScript
EventsManager.prototype.hideContainer = function()
{
var that = this;
var index = that.getNextUnreadEventIndex();
if(index !== -1)
{
EventsManager.animateHideLeft(function() //<--- passing a function as parameter to another function
{
var unreadEvent = that.eventsList.splice(index,1)[0];
unreadEvent.isEventOnFocus = true;
that.eventsList.push(unreadEvent);
that.displayLastEvent();
});
}
}
Вот код функции EventsManager.animateHideLeft() в:
EventsManager.animateHideLeft = function(callback)
{
var p = document.getElementById("eventsContainer");
var width = parseFloat(p.style.width);
if(!width || width === "NaN") width = 200;
if(width <= 10)
{
clearTimeout(fr);
alert(typeof callback); //<-- this shows "undefined"
callback();
}
else
{
width = width - 10;
p.style.width = width + "px";
fr = setTimeout(function()
{
EventsManager.animateHideLeft();
}, 50);
}
};
К сожалению, функция animateHideLeft не работает ожидается. Когда я проверяю тип обратного вызова, он предупреждает «undefined».
Как я могу исправить этот беспорядок, чтобы получить ожидаемый результат?
В дополнение к заданному вопросу, взгляните на 'if (! Width || width ===" NaN ") width = 200;'. Убедитесь, что он делает то, что вы ожидаете. –