JavaScript:带开关/大小写的函数与覆盖函数的函数

JavaScript:带开关/大小写的函数与覆盖函数的函数,javascript,ajax,themes,switch-statement,overwrite,Javascript,Ajax,Themes,Switch Statement,Overwrite,我有一个根据浏览器大小更新元素大小的函数: window.onresize=function(){setContentHeight();} 但是,现在我已经使用AJAX交换主题(更改主体的innerHTML),这个函数需要更改。新主题不仅有新的图像,而且有完全不同的布局。因此,旧的onresize函数只会将页面弄乱。我想到了两种方法来解决这个问题: 方法1)将参数传递给稍加修改的函数setContentHeight(选择),其中参数用于switch/case语句。赞成:主题交换只会改变传递的变量

我有一个根据浏览器大小更新元素大小的函数:

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

但是,现在我已经使用AJAX交换主题(更改主体的innerHTML),这个函数需要更改。新主题不仅有新的图像,而且有完全不同的布局。因此,旧的onresize函数只会将页面弄乱。我想到了两种方法来解决这个问题:

方法1)将参数传递给稍加修改的函数
setContentHeight(选择),其中参数用于switch/case语句。赞成:主题交换只会改变传递的变量的值。Con:
setContentHeight(主题选择)将包含所有主题的代码,并且比需要的更长

方法2)通过评估从XMLHTTPRequest解析的一些脚本代码来覆盖函数。然而,我不知道如何让JS修改现有函数,或者干脆删除它并启动一个新函数。赞成者:功能将保持简短反对者:我不知道怎么做


你会做什么,或者你会完全做别的什么?如果你的答案是方法2,那么你能提供一个如何做到这一点的链接吗?当然,我自己做大部分工作没有问题,但是如果方法#2是首选方法,我可以使用一些建议和一个示例。

如果要更改主体的
innerHTML
,您不能添加/删除一个类吗?或者,最好更改一个全局变量:

var current_theme = 'some_theme';

function loading_new_theme() {
    ...
    current_theme = 'new_theme';
}
然后可以让
setContentHeight
基于该全局变量指定高度

(另外:如果您不打算将任何参数传递给
setContentHeight
,您可以这样做:

window.onresize = setContentHeight;

)

我可以添加/删除一个类,但我认为这不会阻止setContentHeight()函数弄乱对象的尺寸。我想,既然选择是一个全局变量,你说我不必把它作为参数传递是正确的,但是方法1和方法2的问题仍然存在。除非有人说服我,否则我将把它作为开关/案例来实现。我只是想问一下,以防一个如此专业的人有更好的主意。:)这并不是说解决了最初的问题,而是我找到了一个很好的方法来改变我的皮肤,而不需要重新上传整个身体或使用javascript来改变类:。我所要做的就是为每个皮肤设置一个CSS,然后交换CSS文件。@Michael如果这就是你要做的,你应该自己回答这个问题并接受它。