Почему этот Javascript не работает?Изменение стиля - PullRequest
3 голосов
/ 08 января 2011

Не могу понять, почему это не работает:

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 ]

6 голосов
/ 08 января 2011

Это нужно вместо этого:

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

Поскольку функция resize_middle () имеет функцию, выполняемую немедленно, и результат добавляется к событиюВы хотите, чтобы сама функция была добавлена ​​к событию, поэтому вы не включаете (), если ваша функция не возвращает функцию для использования событием.

4 голосов
/ 08 января 2011

Вам нужно это вместо:

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 голосов
/ 08 января 2011
window.onload = resize_middle;

Прочтите этот ресурс по назначению обработчиков событий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...