如果设置,我希望#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。
谢谢。
答案 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;
}
}