JavaScript: функция с переключателем / регистром и перезаписью функции - PullRequest
0 голосов
/ 28 января 2011

У меня есть функция, которая обновляет размеры элементов в зависимости от размера браузера:

window.onresize = function() { setContentHeight(); }

Однако теперь, когда я использовал AJAX для обмена темами (изменениеbodyHTML,) эта функция должна измениться.Новые темы имеют не только новые изображения, но и совершенно другие макеты.Таким образом, старая функция onresize просто портит страницу.Я думал о двух способах исправить это:

Метод 1) Передать параметр в слегка измененную функцию setContentHeight(themeSelection);, где параметр используется в операторе switch / case.Pro: обмен темой просто изменил бы значение переданной переменной.Con: setContentHeight(themeSelection); будет включать код для всех тем и будет длиннее, чем нужно.

Метод 2) Перезапись функции путем вычисления некоторого кода сценария, проанализированного из XMLHTTPRequest.Однако я понятия не имею, как заставить JS изменить существующую функцию или просто удалить ее и запустить новую.Pro: Функция останется короткой Con: Я понятия не имею, как это сделать.

Что бы вы сделали, или вы бы сделали что-то еще полностью?Если ваш ответ - метод 2, то не могли бы вы дать ссылку на то, как это делается?Конечно, у меня нет проблем с выполнением большей части работы, но я мог бы воспользоваться некоторыми советами и примером метода № 2, если это предпочтительный метод.

1 Ответ

1 голос
/ 28 января 2011

Если вы изменяете innerHTML тела, разве вы не можете просто добавить / удалить класс?Или, еще лучше, измените глобальную переменную:

var current_theme = 'some_theme';

function loading_new_theme() {
    ...
    current_theme = 'new_theme';
}

Тогда вы можете setContentHeight назначить высоту на основе этой глобальной переменной.

(Также: если вы не собираетесьчтобы передать аргументы setContentHeight, вы можете просто сделать это:

window.onresize = setContentHeight;

)

...