基本Js用于缩放两个DIV的高度

时间:2011-09-05 15:37:32

标签: javascript

如果设置,我希望#result缩放到#sidebar高度。如果没有,请将#result保留在原始高度。

我的代码:

window.onload = setDiv;

function setDiv() {
    var e = document.getElementById('sidebar'); // Get the sidebar infos
    var eh = e.offsetHeight // div height
    if ( typeof(eh) == "undefined" || typeof(eh) == null)  { // if sidebar isnt in the page
        alert(eh);
        return true;
    } else {
        var eh = e.offsetHeight // div height
        var d = document.getElementById('result') // Get the result div height
        var dh = d.offsetHeight // div height
        d.style.height = eh + 65 + 'px'; // Set result div height to sidebar height
        alert(d);
        document.write(dh);
        return false;
    }
}

我认为不需要HTML / CSS。

谢谢。

2 个答案:

答案 0 :(得分:2)

这一行似乎错了:

if ( typeof(eh) == "undefined" || "null") { // if sidebar isnt in the page

试试这个:

if ( typeof(eh) == "undefined" || typeof(eh) == null) { // if sidebar isnt in the page

另外,我会添加一个try catch块。如果有一个抛出你甚至不知道你的代码没有执行。

答案 1 :(得分:1)

这会导致错误,因为e不存在(还):

var e = document.getElementById('sidebar'); // <<< This is what doesn't work

这是因为您的window.onload做得不对。取下括号:

window.onload = setDiv;

http://jsfiddle.net/userdude/u8DZx/3/

我想证明在jQuery这样的库中这是多么容易。 window.onload并不总是像你想象的那样工作;在jQuery中使用onDomReady$(document).ready()通常会更好。您还可以在页面加载的不同点添加多个处理程序,这使用window.onload方法更加困难。

$(document).ready(function(){
    setTimeout(function(){setDiv();},2000); // So you can see the transition
});

function setDiv() {
    var $sidebar = $('#sidebar');
    if ($sidebar.size() === 0) {
        return true;
    } else {
        $('#result').animate({
            height : $('#sidebar').height()
        }, 5000);
        return false;
    }
}

http://jsfiddle.net/userdude/u8DZx/1/

如果您不想要效果,请执行以下操作:

$('#result').height($('#sidebar').height());

如果你真的打算使用offsetHeight,这听起来不像你想要的那样(height代替),你可以这样做:

$(document).ready(function(){
    setTimeout(function(){setDiv();},2000); // So you can see the transition
});

function setDiv() {
    var $sidebar = $('#sidebar');
    if ($sidebar.size() === 0) {
        return true;
    } else {
        $('#result').offset($('#sidebar').offset());
        return false;
    }
}

http://jsfiddle.net/userdude/u8DZx/2/