Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2012, 19:03
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

Перенос текста
Всем привет!
Помогите с реализацией идеи..
Вообщем есть block1 с текстом и block2 без текста, если в block1 больше 50 символов остальные символы которые не вместились переходили в block2.
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2012, 19:11
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

fAmOus, самое простое, но наверняка есть решение получше
window.onload = function () {
  var block1 = document.getElementById("block1"),
       block2 = document.getElementById("block2"),
       text = block1.innerHTML;
  if (text.length > 50) {
    block1.innerHTML = text.substr(0, 49);
    block2.innerHTML = text.substr(50, text.length);
  }
}
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2012, 19:28
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

lord2kim,
Спасибо, был один баг не переносил 1 букву "исправил".
А можно ли сделать чтобы переносил слова?
Слово не вместилось и переносит.. как-то так
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2012, 22:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

window.onload = function () {
  var block1 = document.getElementById("block1"),
       block2 = document.getElementById("block2"),
       text = block1.innerHTML,
       pos = text.lastIndexOf(' ', 51);
  if (text.length > 50) {
    block1.innerHTML = text.substring(0,  pos);
    block2.innerHTML = text.substring(pos+1);
  }
}
__________________
29375, 35

Последний раз редактировалось Aetae, 16.08.2012 в 23:45.
Ответить с цитированием
  #5 (permalink)  
Старый 16.08.2012, 23:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

https://developer.mozilla.org/en-US/...ay/lastIndexOf,
здесь пишут, что поддержка lastIndexOf, начиная с IE9, хотя проверил, работает и в 7, 8 , по ходу блажанули
Ответить с цитированием
  #6 (permalink)  
Старый 16.08.2012, 23:40
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

ха-ха, тупнул, сразу на таблицу глянул, на большее не хватило
Ответить с цитированием
  #7 (permalink)  
Старый 16.08.2012, 23:48
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

Всё работает замечательно только я не учел один нюанс
Вообщем блоков с id "content-last-screams" много, нужно чтобы каждый "content-last-screams" переносил свои не влезающие слова в блок "content-last-screams-load".

Выглядит примерно так:
<div id="content-last-screams1" class="content-last-screams"> - Вообщем блоков с id "content-last-screams" много, нужно чтобы каждый "content-last-screams" переносил свои не влезающие слова в блок "content-last-screams-load".</div>
<div id="content-last-screams-load1" class="content-last-screams-load"></div>

<div id="content-last-screams2" class="content-last-screams"> - Вообщем есть block1 с текстом и block2 без текста, если в block1 больше 50 символов остальные символы которые не вместились переходили в block2.</div>
<div id="content-last-screams-load2" class="content-last-screams-load"></div>

<div id="content-last-screams3" class="content-last-screams"> - Спасибо, был один баг не переносил 1 букву "исправил".
А можно ли сделать чтобы переносил слова?
Слово не вместилось и переносит.. как-то так</div>
<div id="content-last-screams3" class="content-last-screams-load"></div>

Последний раз редактировалось fAmOus, 17.08.2012 в 00:13.
Ответить с цитированием
  #8 (permalink)  
Старый 17.08.2012, 00:13
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

Дзен-трансгуманист,
Отредактировал.. а если так?
Ответить с цитированием
  #9 (permalink)  
Старый 17.08.2012, 02:01
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

Дзен-трансгуманист,
Благодарю
Ответить с цитированием
  #10 (permalink)  
Старый 17.08.2012, 08:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<style>
.textBegin {
	color: green;
}
.textEnd {
	color: lightgreen;
}
</style>

<div class="textBegin">
 - Вообщем блоков с id "content-last-screams" много, нужно чтобы каждый "content-last-screams" переносил свои не влезающие слова в блок "content-last-screams-load".
 </div>
<div class="textEnd"></div>

<div class="textBegin">
 - Вообщем есть block1 с текстом и block2 без текста, если в block1 больше 50 символов остальные символы которые не вместились переходили в block2.
 </div>
<div class="textEnd"></div>

<div class="textBegin">
 - Спасибо, был один баг не переносил 1 букву "исправил".
А можно ли сделать чтобы переносил слова?
Слово не вместилось и переносит.. как-то так
</div>
<div class="textEnd"></div>

<script>
window.onload = function () {

	if (!document.getElementsByClassName) { 
		document.getElementsByClassName = function (nameOfClass) {
			var mas = []; 
			var elements = this.getElementsByTagName('*'); 
			var len = elements.length;
			for (var i = 0; i < len; i++) { 
				if (elements[i].className == nameOfClass) { 
					mas.push(elements[i]); 
				}
			} 
			return mas; 
		}
	}

	function setBreak(elem1, elem2) {
		var n = 50;
		var text = elem1.innerHTML;
		if (text.length > n) {
			var pos = text.lastIndexOf(' ', n + 1);
			elem1.innerHTML = text.substring(0,  pos);
			elem2.innerHTML = text.substring(pos + 1);
		}
	}

	var elems1 = document.getElementsByClassName('textBegin');
	var elems2 = document.getElementsByClassName('textEnd');
	var len = elems1.length;
  
	for (var i = 0; i < len; i++) {
		setBreak (elems1[i], elems2[i]);
	}
	
}
</script>

PS: или через querySelectorAll

Последний раз редактировалось bes, 17.08.2012 в 08:41.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить отмену выделения текста от клика мышью? Маэстро Internet Explorer 0 03.04.2012 21:21
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19
Перенос текста ссылки по строкам greatilya Элементы интерфейса 5 13.03.2009 13:07
Firefox: перехватить соббытие при перетаскивании текста no_alex Общие вопросы Javascript 9 21.08.2008 18:02