Как создать кратную высоту строки в JavaScript? - PullRequest
2 голосов
/ 28 октября 2011

Я все еще новичок в Javascript и JQuery.Я написал небольшую функцию, которую я запускаю из готового документа.Его цель состоит в том, чтобы установить высоту div как высоту строки:

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.В этом вопросе я увидел, что полученное значение может иметь любой формат (%, 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 );

}

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Изменить на:

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;
1 голос
/ 28 октября 2011

var test = "15,83333px";

предупреждение (parseFloat (тест));

Только что попробовал это в jsFiddle. Сработал как положено и вернул значение без пикселей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...