2016-03-08 3 views
2

Может кто-нибудь, пожалуйста, дайте мне знать, как обрезать текст, как показано ниже, используя только javascript, а не jQuery? Это не работает на мобильных устройствах.Как отрегулировать текст в классе Div с помощью Javascript

У меня есть функция, которая вычисляет разные даты в течение определенного периода времени, но мне нужно обрезать последние 42 символа класса divs = «вычисленный» вывод.

Нижеследующее прекрасно работает на рабочем столе, но не отображает div на мобильных устройствах. Я тестировал и удалял функцию jQuery, и они отображались, но мне нужно, чтобы они были обрезаны.

Благодаря

(function ($) { 
$('.calculated').text(function (_,txt) { 
return txt.slice(0, -42); 
});  
})(jQuery); 

ответ

0
function trimString(){ 
    return document.getElementsByClassName('calculated')[0].innerHTML.slice(0,-42); 
} 
1

Использование document.getElementsByClassName() с Element.innerHTML() заменить содержание div[class=calculated]

(function(event) { 
 
    var elem = document.getElementsByClassName('calculated')[0]; 
 
    alert(elem.innerHTML.slice(0, -42)); 
 
    elem.innerHTML = elem.innerHTML.slice(0, -42); 
 
})();
<div class="calculated">Content longer that 42 chars.Content longer that 42 chars.Content longer that 42 chars.</div>

Для обновления все дивы с классом calculated добавить for loop в результате document.getElementsByClassName см фрагмент кода ниже:

(function() { 
 
    var elements = document.getElementsByClassName('calculated'); 
 
    for (var i=0;i < elements.length; ++i){ 
 

 
    elements[i].innerHTML = elements[i].innerHTML.slice(0, -42); 
 
    }; 
 
})();
<div class="calculated">Content3 Content3 Content3 Content3 Content3 Content3 Content3 Content000 </div> 
 

 
<div class="calculated">Content2 Content2 Content2 Content2 Content2 Content2 Content2 Content000 </div> 
 

 
<div class="calculated">Content 1Content 1Content 1Content 1Content 1Content 1Content Content000</div>

удачи)

+0

Благодарим за отзыв. Это работает, но только на первом div, классифицированном «рассчитанным». Мне нужно, чтобы он применился ко всем divs, классифицированным как «рассчитанные». Есть какие-то мысли? –

+0

@billy_comic вам нужно обновить все из них? –

+1

Да. Мне нужно обрезать их на 42 символа. Это работа для цикла? –

0
function trimThingies() { 
    var targets = document.getElementsByClassName('calculated'); 
    for (var i=0;i<targets.length;i++) { 
     var tgt = targets[i]; 
     if (tgt.innerHTML.length > 42) { 
     tgt.innerHTML = tgt.innerHTML.slice(0, -42); 
     } 
    } 
} 

должны это сделать. Затем вызовите trimThingies() при загрузке или, когда это необходимо.

Вряд ли элегантный, но он должен выполнять эту работу.

Обновление: JSFiddle

+0

Это довольно деструктивная функция в том смысле, что ее вызов снова удалит еще 42 символа из тех DIV, которые уже были нацелены, поэтому я, вероятно, подумаю об обрезке и хранении данных вне структуры DOM, но это выходит за рамки вопроса, который я думаю. – MPF

+0

Это работает и служит цели , но по какой-то причине не обрезается на мобильных устройствах. В браузере отлично работает, но из android, divs заполняются пустым. –

+0

функция предполагала, что длина всегда будет больше 42 символов - если это не так, они по существу, закончится пустым, поскольку все, что было там, будет обрезано. Я обновил ответ, чтобы проверить длину до три mming. – MPF

Смежные вопросы