javascript - 如何在javascript中创建行高的倍数?

标签 javascript jquery format css

我对 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/

相关文章:

javascript - 如何使用 jsonPath 或替代方法从 JSON 结构中的 childNode 查找 parentNode?

javascript - 如何使用 jQuery 获取选择表单的输入值?

javascript - 如何通过单击另一个元素来显示隐藏的元素

Excel/VBA 在从 VBA 转置/粘贴时将日期转换为美国格式

javascript - 将所有使用单引号的 html 属性定义替换为双引号

javascript - 使用 onchange 事件时如何简化显示/隐藏 div?

javascript - 在函数内部延迟jquery函数?

jquery - 在垂直滚动页面时平滑地改变粘在顶部的元素的填充

java - java中具体的字符串格式

python - 如何在Python2中嵌套格式字符串?