X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> вставление ссылки
cyber_ua
cyber_ua
Topic Starter сообщение 19.4.2012, 0:17; Ответить: cyber_ua
Сообщение #1


пишу скрипт обрезающий весь текст в блоках на странице до 30% и добавляющий ссылку на полный текст(что то на подобие как вконтакте).
вот в чем проблема :
ссылку добавляет только к последнему блоку
[JS]function sliceText(){
var lengthArray,endLen,resultText,findEndSymols;
var AllClass=document.getElementsByClassName("text");
var fullLink=document.createElement('a');
//создание ссылки на полный текст
fullLink.setAttribute("href"," ");
fullLink.setAttribute("onclick","full();return false;");
fullLink.innerHTML="Смотреть полностью...";
for(var i=0;i<AllClass.length;i++)
{
lengthArray=AllClass[i].innerText.length;//длина текстовой строки

if(lengthArray>200){
/*выводится только 30% текста */
endLen=(lengthArray/100)*30;
//--------------------
findEndSymols=AllClass[i].innerText.slice(endLen);
findEndSymols=findEndSymols.indexOf(" ");
endLen=endLen+findEndSymols;//вырезать начиная с пробела
//--------------------
resultText=AllClass[i].innerText.slice(0,endLen);//краткий текст
AllClass[i].innerHTML=resultText+" ";
AllClass[i].appendChild(fullLink);

}


}
}[/JS]
тестовые блоки
<div id="block1" class="text">
Legend of Grimrock — это ролевая игра от студии Almost Human Games, которая также выступила и издателем. Проект вышел 11 апреля и стал самым продаваемым в Steam на прошлой неделе, при этом разработчики говорят, затраты на ее разработку уже окупились

</div>
<div id="block2" class="text">
Десятка самых продаваемых игр прошлой недели: 1. Legend of Grimrock 2. Wargame: European Escalation 3. The Elder Scrolls V: Skyrim 4. Max Payne 3 5. Sins of A Solar Empire: Rebellion 6. Call of Duty: Modern Warfare 3 7. Might

</div>
<div id="block3" class="text">
Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).

</div>
<div id="block4" class="text">
Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).

Судя по видео, в Star Trek будет очень много экшена: бега, перестрелок, полетов в космосе и не только, и даже альпинизм.

Напомним, Star Trek выйдет в начале 2013 года на PC и консоли, а здесь вы увидите минуту пре-альфа геймплея игры годичной давности.

</div>

и еще такой вопрос как после того когда я обрезал текст к нему получить доступ? хранить в массиве или можно как то по проще получить весь текст
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 19.4.2012, 0:26; Ответить: Arks
Сообщение #2


да лениво набирать, ты посмотри что выводится, по-dump'и переменные в процессе выполнения js-функции или воспользуйся отладчиком например в firebug.
Насчет текста "как-то проще" - приходит в голову это тупо расчет ширины блока + overflow:hidden + добавление '...', для вывода всего текста убирать '...' в конце старого блока + менять ширину блока. От того что ты все равно хранишь где-то полный текст блока, в массиве или еще где-то на клиенте - расход памяти явно не уменьшится.
Если уж не хочется хранить полный текст - так делай обрезку на сервере и подкачивай полный текст ajax'ом.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 19.4.2012, 0:30; Ответить: cyber_ua
Сообщение #3


да лениво набирать, ты посмотри что выводится, по-dump'и переменные в процессе выполнения js-функции или воспользуйся отладчиком например в firebug.

да в том и дело что firebug и консоль js от хрома ошибок не выдает.
я пока сам долго не повожусь с кодом на форуме писать не буду=(
если надо могу залить на тестовый сайт
Насчет текста "как-то проще" - приходит в голову это тупо расчет ширины блока + overflow:hidden + добавление '...', для вывода всего текста убирать '...' в конце старого блока + менять ширину блока. От того что ты все равно хранишь где-то полный текст блока, в массиве или еще где-то на клиенте - расход памяти явно не уменьшится.

почему нет? тот же текст будет в 2х копиях на одной странице в блоке и в массиве или ошибаюсь?или просто в массиве будет ссылка на текст?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 19.4.2012, 0:39; Ответить: Arks
Сообщение #4


(cyber_ua @ 19.4.2012, 03:30) *
тот же текст будет в 2х копиях на одной странице в блоке и в массиве

да пожалуйста. И еще в 5 бэкапах в localstorage. Только вопрос - зачем? :nea: Чем тебе вариант с overflow не нравится, смотри:
<div style="width:<рачитаный размер ширины для шрифта*количество букв для 30%>; overflow:hidden;"><div style="width: 999999px">текст<+...></div>

При клике по "показать всё" - делаем array_split на '...'+join на ' ' (если других троеточий нет разумеется иначе придется поиграться с substr+str.length) и ставим размер контейнера на 100% + всякие white-space и т.п.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 19.4.2012, 0:43; Ответить: cyber_ua
Сообщение #5


(Arks @ 19.4.2012, 03:39) *
да пожалуйста. И еще в 5 бэкапах в localstorage. Только вопрос - зачем? :nea: Чем тебе вариант с overflow не нравится, смотри:
<div style="width:<рачитаный размер ширины для шрифта*количество букв для 30%>; overflow:hidden;"><div style="width: 999999px">текст<+...></div>

При клике по "показать всё" - делаем array_split на '...'+join на ' ' (если других троеточий нет разумеется иначе придется поиграться с substr+str.length) и ставим размер контейнера на 100% + всякие white-space и т.п.

идею понял спасибо=)
щас буду пробывать=)
гляну серию интернов для раслабления мозга и потом снова в бой:goodpost:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 19.4.2012, 9:07; Ответить: cyber_ua
Сообщение #6


короче надо менять высоту а не ширину.
а как расчитать ее для 30% текста еще не придумал есл кто то знает подскажите.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 19.4.2012, 15:14; Ответить: cyber_ua
Сообщение #7


а как расчитать ее для 30% текста еще не придумал есл кто то знает подскажите.

нужна помощь по этому вопросу.
как получить высоту текст и кол-во строк в блоке???
а то что то немогу найти
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 20.4.2012, 17:21; Ответить: cyber_ua
Сообщение #8


вариант предложенный выше не подошел, с размером там не получается так как менять ширину не льзя а с высотой напряжно
поэтому сделал так
[JS]function sliceText(){
var lengthArray,endLen,resultText,findEndSymols,fullLink;
var AllClass=document.getElementsByClassName("text");
for(var i=0;i<AllClass.length;i++)
{

lengthArray=AllClass[i].innerText.length;//длина текстовой строки

if(lengthArray>200){
//-------------------------------------

fullLink=document.createElement('a');
//создание ссылки на полный текст
fullLink.setAttribute("href"," ");
fullLink.setAttribute("onclick","Fulltext(this);return false;");
fullLink.innerHTML="Смотреть полностью...";
//-------------------------------------
/*выводится только 30% текста */
endLen=(lengthArray/100)*30;
//--------------------
findEndSymols=AllClass[i].innerText.slice(endLen);
findEndSymols=findEndSymols.indexOf(" ");
endLen=endLen+findEndSymols;//вырезать начиная с пробела
//--------------------
resultText=AllClass[i].innerText.slice(0,endLen)+"<span class='notVisible' >"+AllClass[i].innerText.slice(endLen)+"</span>";
AllClass[i].innerHTML=resultText+" ";
AllClass[i].appendChild(fullLink);

}


}
}[/JS]
но вот в чем проблема при нажатие на ссылку полность отображает все блоки а не один
вот функция привязанная к ссылке
[JS]function Fulltext(obj){

obj.previousSibling.style.display="block";
obj.parentNode.removeChild(obj);
}[/JS]
не могу понять в чем проблема
Мне кажется не правиль использую previousSibling
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 20.4.2012, 23:43; Ответить: Den1xxx
Сообщение #9


(cyber_ua @ 20.4.2012, 20:21) *
но вот в чем проблема при нажатие на ссылку полность отображает все блоки а не один

Так вы ж невидимый текст в каждом блоке привязали к одному классу, вот он и работает одинаково.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 20.4.2012, 23:47; Ответить: cyber_ua
Сообщение #10


(Den1xxx @ 21.4.2012, 02:43) *
Так вы ж невидимый текст в каждом блоке привязали к одному классу, вот он и работает одинаково.


ну а как тогда не задавать же каждому блок отдельный id?
кстати по id работает:rjunimagu:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Жирные бурж ссылки под крипту
Размещаем статьи на популярных международных сайтах
0 umexa 366 23.4.2024, 23:23
автор: umexa
Открытая тема (нет новых ответов) SEO Линк Билдинг под Бурж | Вечные ссылки США, Европа и Мир с Гарантией
21 Needmylink1 7189 23.4.2024, 21:16
автор: Needmylink1
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВечные ссылки с трастовых сайтов
54 1informer 22885 20.4.2024, 18:39
автор: 1informer
Горячая тема (нет новых ответов) Ссылки за которые не стыдно! Качественный линк билдинг сервис под Бурж от Westrank. Честный прайс.
63 DaoDog 47514 19.4.2024, 12:05
автор: Omaxis
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКрауд ссылки с форумов, блогов, порталов. Жирные ссылки с Ua,Ru, Бурж площадок. Вечные ссылки в статьях на собственных сайтах
Быстро, качественно и ответственно!
138 vetalbon 66685 13.4.2024, 17:53
автор: vetalbon


 



RSS Текстовая версия Сейчас: 26.4.2024, 2:17
Дизайн