我有一个根据浏览器大小更新元素大小的函数:
window.onresize = function() { setContentHeight(); }
但是,现在我已经使用AJAX来交换主题(更改主体的innerHTML),这个功能需要改变。新主题不仅有新图像,还有完全不同的布局。因此,旧的onresize功能只会弄乱页面。我想到了两种方法来解决这个问题:
方法1)将参数传递给略微修改的函数setContentHeight(themeSelection);
,其中参数用于switch / case语句。 Pro:主题交换只会改变传递的变量的值。 Con:setContentHeight(themeSelection);
将包含所有主题的代码,并且比所需主题更长。
方法2)通过评估从XMLHTTPRequest解析的一些脚本代码来覆盖函数。但是,我不知道如何让JS修改现有函数或只是删除它并开始一个新函数。亲:功能会保持简短Con:我不知道该怎么做。
你会做什么,或者你会完全做其他事情?如果你的答案是方法2,那么你能提供一个如何完成的链接吗?当然,我自己完成大部分工作没有问题,但如果它是首选方法,我可以使用一些建议和方法#2的例子。
答案 0 :(得分:1)
如果你正在改变身体的innerHTML
,你也不能只是添加/删除一个类吗?或者,更好的是,更改全局变量:
var current_theme = 'some_theme';
function loading_new_theme() {
...
current_theme = 'new_theme';
}
然后你可以setContentHeight
根据该全局变量指定高度。
(另外:如果您不打算将任何参数传递给setContentHeight
,您可以这样做:
window.onresize = setContentHeight;
)