为什么这个Javascript不起作用?风格变化

时间:2011-01-08 19:13:06

标签: javascript html css dom

我不能为我的生活弄清楚为什么这不起作用:

的javascript:

//==================================//
// resize_middle                            //
//----------------------------------//
// Resizes the content and left     //
// navigation div to make up the        //
// remains of available space.      //
//==================================//
function resize_middle()
{
    min_height = (window.innerHeight - 276) + "px";
    middle_left = document.getElementById("middle_left");
    middle_right = document.getElementById("middle_right");
    alert("its not going to work!");
    alert("here goes...");
    alert(min_height);
    middle_left.style.minHeight = min_height;
    alert("it works!");
    middle_right.style.minHeight = min_height;
}
//==================================//
// event handlers                           //
//==================================//
window.onload = resize_middle();
window.onresize = resize_middle();

html(仅显示头部的主体和javascript位):

<script src="javascript.js" type="text/javascript" charset="utf-8"></script>
<body>
    <div id="container">
        <div id="central_column">
            <div id="top_left">
                <img src="./images/icon.png" alt="icon" style="width:100%;height:auto;" />
            </div>
            <div id="top_right">
                top right
            </div>
            <div id="middle_left">
                middle left
            </div>
            <div id="middle_right">
                middle right
            </div>
            <div id="bottom">
                bottom
            </div>
        </div>
    </div>
</body>

我之前使用过它并且只有一些略有不同的代码的工作副本,但它完美无缺。我得到调试警报,直到“它工作!”,我没有得到。先谢谢你,

3 个答案:

答案 0 :(得分:6)

你需要这个:

window.onload = resize_middle;
window.onresize = resize_middle;

因为有了resize_middle(),所以立即处理该函数,并将结果添加到事件中。您希望将函数本身添加到事件中,因此除非函数返回要使用的事件的函数,否则不要使用()。

答案 1 :(得分:4)

你需要这个:

window.onload = resize_middle;
window.onresize = resize_middle;

目前,您正在调用这些函数并将其返回值分配给事件。你想要的是将事件自己分配给事件,并让事件调用它们。


旁注:

除非resize_middle中的变量在其他地方定义,并且您希望外部范围可以访问它们,否则在定义新变量时最好使用var关键字。

function resize_middle()
{
      // Changed to use "var"
    var min_height = (window.innerHeight - 276) + "px";
    var middle_left = document.getElementById("middle_left");
    var middle_right = document.getElementById("middle_right");

    alert("its not going to work!");
    alert("here goes...");
    alert(min_height);
    middle_left.style.minHeight = min_height;
    alert("it works!");
    middle_right.style.minHeight = min_height;
}

答案 2 :(得分:2)

window.onload = resize_middle;

assigning event handlers上阅读此资源。