Javascript:使用元素高度作为像素值来设置其他元素的属性

Javascript:使用元素高度作为像素值来设置其他元素的属性,javascript,css,height,margins,Javascript,Css,Height,Margins,我试图根据另一个元素的高度来设置某些元素的高度和边距,但它不起作用 function matchHeight(divName) { var Sheight = document.getElementById(divName).style.height; document.getElementById('bookmark').style.height = Sheight + '45px'; document.getElementById('bookmarkend').

我试图根据另一个元素的高度来设置某些元素的高度和边距,但它不起作用

  function matchHeight(divName) {
    var Sheight = document.getElementById(divName).style.height;

    document.getElementById('bookmark').style.height = Sheight + '45px';
    document.getElementById('bookmarkend').style.marginTop = Sheight + '45px';
    document.getElementById('bookmarktagI').style.height = Sheight + '255px';
  }
我的功能有什么问题

如果可能的话,我宁愿不使用jquery。

试试这个:

function matchHeight(divName) {
  var Sheight = parseInt(document.getElementById(divName).style.height);

  document.getElementById('bookmark').style.height = Sheight + 45 + 'px';
  document.getElementById('bookmarkend').style.marginTop = Sheight + 45 + 'px';
  document.getElementById('bookmarktagI').style.height = Sheight + 255 + 'px';
}

+将被视为字符串连接,否则将给出错误的值

如果样式是内联设置的,即
,则最有可能的问题是解析
高度
样式值。在这种情况下,
sheigh
将是
“100px”
,它将与其他值连接起来,形成类似于
100px45px
,这不是很好

要解决此问题,请使用
parseInt
将值解析为整数,并使用正确的加法:

var Sheight = parseInt(document.getElementById(divName).style.height, 10);
document.getElementById('bookmark').style.height = (Sheight + 45) + 'px';

调试第一步是控制台。log(sheigh)-看看它是否是(a)您期望的值,以及(b)将
'45px'
连接到…
样式上是否有意义。height
返回类似
100px
,然后添加
45px
,您得到的
100px45px
不是有效值?您希望得到什么?你也可以添加一些html。它不需要像
height=Sheight+45+'px'?您确实需要px,javascript样式中是字符串,返回值是'100px'等等。非常好!你很聪明。