Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Как обрезать строку и добавить символы в середине, в зависимости от длинны строки (https://javascript.ru/forum/css-html-firefox-mizilla/5488-kak-obrezat-stroku-i-dobavit-simvoly-v-seredine-v-zavisimosti-ot-dlinny-stroki.html)

andreyua 18.10.2009 15:32

Как обрезать строку и добавить символы в середине, в зависимости от длинны строки
 
Есть например строка, текст ссылки:
http://support.creative.com/downloads/welcome.aspx?nLanguageLocale=1033&nDriverType=1#type_1


В FF, при наведении на нее в Букмарках строка превращается , как на картинке, то есть обрезается слева и справа, в середину добавляются троеточие в случае, если количество символов даной строки превысило допустимое значение.



Если:
str=http://support.creative.com/downloads/welcome.aspx?nLanguageLocale=1033&nDriverType=1#ty pe_1
то как сделать чтобы :
str="как на картинке"
Средствами регулярных выражений или может быть как то по другому.
Сильно не пинайте, так как пока полный ньюб !

Riim 18.10.2009 15:57

if (str.length > 40) str = str.slice(0, 10) + '...' + str.slice(-10);

andreyua 18.10.2009 17:22

Благодарю

boobellka 14.01.2010 20:32

Пытаюсь применить подсказку Riim. Не получается. Что не так?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>

<div id="nem" class="tab" style="background:#000000; width:300px; color:#ffffff; left:0px;top:0px;" onclick="alert(s);">11dfsdsvfsdm,nj ;kljcvscxcvxvc3222sbhjjshbdcvhjkvbshjcbshjcbjsdbch sbf11weqwe333</div>

<script language="JavaScript">
var nem1 = document.getElementById('nem');
var str = nem1.length;
if (str.length > 10) str = str.slice(0, 5) + '...' + str.slice(-5);
</script>

</body>
</html>

Gvozd 14.01.2010 21:35

Цитата:

Сообщение от boobellka
var str = nem1.length;

nem1 это DOM-объект
если вы хотите получить доступ к етксту внутри него, то следует использовать innerHTML
PS Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

boobellka 15.01.2010 12:11

Помогло. Работает вот так:

<div id="nem" class="tab" style="background:#000000; width:300px; color:#ffffff; left:0px;top:0px;" >11dfsdsvfsdm,nj ;kljcvscxcvxvc3222sbhjjshbdcvhjkvbshjcbshjcbjsdbch sbf11weqwe333</div>

<script language="JavaScript">
var str=0;
var nem1 = document.getElementById('nem').innerHTML;
var str = nem1.length;
if (str > 20) {nem1 = nem1.slice(0, 5) + '...' + nem1.slice(-5);}
document.getElementById("nem").innerHTML = nem1;
</script>

boobellka 15.01.2010 12:13

Теперь другая задача возникла.
Надо в промежуток между словом и картинкой вставить точки.
Вся строка фиксированной величины - 300px.
Слово - не фиксированной величины, изменяемо.

boobellka 15.01.2010 12:16

Результат: http://muscol.ru/catalog.php?var=1
Вопрос решен частично, но не красиво, вставлена в общем диве фоновая картинка с repeat-x. Можно ли аккуратно это сделать с помощью js?

Gvozd 15.01.2010 12:58

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Dronch 25.06.2010 16:36

Понимаю, что вопрос элементарный но все таки.
Есть строка типа vasya.popov [50%]. Надо пробежаться по строке с лева на право до первого пробела, и отбросить все что после пробела, включая сам пробел. Т.е. должно остаться vasya.popov.


Часовой пояс GMT +3, время: 11:03.