trimText()
by levchenko_d
HTML
<div id="test"></div>
JavaScript
function trimText(text, limit, postfixText, fallbackText){
var maxSize = 96,
postfix = '...',
postfixShadow = document.createElement('div'),
postfixSize = postfix.length,
fallback = fallbackText || '';
if(typeof text != 'string'){
console.error('trimText() - @text is not type of String. Fallback to "'+fallback+'"');
return fallback;
}
if(postfixText){
if(typeof postfixText != 'string'){
console.error('trimText() - @postfixText is not type of String. Fallback to "'+postfix+'"');
} else {
postfix = postfixText || '...';
postfixShadow.innerHTML = postfix;
postfixSize = postfixShadow.innerText.length;
}
}
if(limit){
if(typeof limit != 'number'){
console.error('trimText() - @limit is not type of Number. Fallback to "'+maxSize+'"');
} else {
maxSize = limit;
}
}
if(text.length > maxSize){
return text.slice(0, maxSize - postfixSize).trim() + postfix;
} else {
return text;
}
}
function trim(element, text){
if(!element){return false;}
var untrimClass = 'untrim_'+new Date().getTime(),
postfix = '... <a href="javascript:;" class="trim-trigger '+untrimClass+'">show more</a>',
untrimTrigger;
element.TRIM_FULL_TEXT = text;
element.innerHTML = trimText(element.TRIM_FULL_TEXT, 50, postfix);
untrimTrigger = element.querySelector('.'+untrimClass);
if(untrimTrigger){
untrimTrigger.onclick = function(){
element.innerHTML = element.TRIM_FULL_TEXT;
};
}
}
/* document.getElementById('test').innerHTML = trimText("Convallis convallis tellus id interdum velit laoreet id donec. Convallis posuere morbi leo urna molestie at elementum. Duis convallis convallis tellus id interdum velit. Nunc consequat interdum varius sit amet. Pretium aenean pharetra magna ac placerat vestibulum lectus. Non quam lacus suspendisse faucibus interdum posuere lorem. Tortor id aliquet lectus...