我对 Javascript 和 JQuery 还很陌生。我编写了一个从文档就绪运行的小函数。其目的是将 div 的高度设置为 line-heights 的倍数:
function setLoginLinksHeight(numOfLines) {
var ll = hash(LOGIN_LINKS);
$(ll).css('line-height','130%');
var lh = $(ll).css('line-height');
var nh = lh * numOfLines; // Issue here
$(ll).height(nh);
}
从 FireBug 中,我检索到的行高是 15.5833px
。当我将其乘以 2(例如)时,nh
设置为 NaN
。我在这个question中看到检索到的值可以具有任何格式(%、px 等)。这太可怕了!
如何将返回的值转换为没有单位的像素数,以便能够创建它的倍数? Javascript 或 JQuery 中有可用的库/函数吗?在这种情况下,推荐的做法是什么?谢谢。
编辑
我按照 mblase75 的解决方案开发了一个小型单元分配器:
function splitUnit(e) {
var eUnit = '';
var eValue;
if( e && ( length = e.search( /px/ ) ) ) {
eUnit = 'px';
eValue = e.substr( 0, length );
} else if ( e && ( length = e.search( /em/ ) ) ) {
eUnit = 'em';
eValue = e.substr( 0, length );
} else {
eValue = e;
}
return new Array( eValue, eUnit );
}
最佳答案
更改为:
var lh = parseFloat($(ll).css('line-height'));
当然,这并不能保证您会获得一定数量的像素,而只是保证您会获得一个数字。要单独提取单位,请添加:
var lhunits = $(ll).css('line-height').match(/\D+$/)[0];
// gets first element of array
...然后将计算与旧单位结合起来:
var nh = (lh*numOfLines) + lhunits;
关于javascript - 如何在javascript中创建行高的倍数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931406/