加载页面后更改window.onresize失败

时间:2013-06-26 04:26:42

标签: javascript window-resize onresize

我有一个函数名onresizeWindow()onresizeWindow2(),我放在页面的头部来改变div的高度。

function onResizeWindow() {
        if (window.innerHeight && document.getElementById("divListItem"))
            document.getElementById("divListItem").style.height = window.innerHeight - 135;
        else if (document.getElementById("divListItem"))
            document.getElementById("divListItem").style.height = document.body.clientHeight - 135;
    }
function onResizeWindow2() {
        if (window.innerHeight && document.getElementById("divListItem"))
            document.getElementById("divListItem").style.height = window.innerHeight - 275;
        else if (document.getElementById("divListItem"))
            document.getElementById("divListItem").style.height = document.body.clientHeight - 275;
        }
}

然后在我页面的页脚中,我把这个

window.onresize = onResizeWindow;
onResizeWindow();

当用户点击按钮时,我把这段代码

function showDiv(){
        var tr = document.getElementById('tdSearch');               
        if (tr.style.display =="table-row"){
            tr.style.display = "none"; 
            window.onresize= null;
            window.onresize= onResizeWindow();
            onResizeWindow();
        }else{
            tr.style.display = "table-row";
            window.onresize= null;
            window.onresize= onResizeWindow2();
            onResizeWindow2();
        }
}

问题是单击按钮后,页面的onresize功能不再起作用。如何解决?

2 个答案:

答案 0 :(得分:0)

执行window.onresize= onResizeWindow();后,您有效地将window.onresize设置为undefined,因为您正在运行onResizeWindow并将onresize设置为返回值。

只需删除括号。

function showDiv() {
        var tr = document.getElementById('tdSearch');               
        if (tr.style.display === "table-row") {
            tr.style.display = "none";
            window.onresize = onResizeWindow;
            onResizeWindow();
        } else {
            tr.style.display = "table-row";
            window.onresize = onResizeWindow2;
            onResizeWindow2();
        }
}

答案 1 :(得分:0)

与原始作业一样,您不应使用()。使用:

window.onresize = onResizeWindow;
// and
window.onresize = onResizeWindow2;

添加()会立即调用函数并将其返回值分配给onresize属性。这些函数什么都不返回,因此undefined是返回的值,这意味着在调整窗口大小时没有任何内容运行。