Скрытие текста

Статус
Закрыто для дальнейших ответов.

cyber

Member
Регистрация
29.04.2012
Сообщения
13
снова создаю подобную тему,для этого скрипта(извеняюсь за это).
Но вообще думал что я его закончил и начал заниматся созданием события загрузки для него. но потом случайно нашел очень большой баг
в чем суть бага
вот тут пример кода запуска онлайн http://learn.javascript.ru/play/6ETNmc
там добавали кнопку slice чтоб было наглядней видно, посмотрите как выглядит 4й блок с верху до нажатия на кнопку и после т.е я блоком див разрываю структуру документа и интерпретатор сам закрывает теги , но как потом правильно возобновить структуру?
изначально структура блока такая
HTML:
<p>Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).</p>
<p>Судя по видео, в Star Trek будет очень много экшена: бега, перестрелок, полетов в космосе и не только, и даже альпинизм.</p>
<p>Напомним, Star Trek выйдет в начале 2013 года на PC и консоли, а здесь вы увидите минуту пре-альфа геймплея игры годичной давности.</p>
после выполнения скрипта она становится такая
HTML:
<p>Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).</p>

<p>Судя  </p><div class="notVisible"> по видео, в Star Trek будет очень много экшена: бега, перестрелок, полетов в космосе и не только, и даже альпинизм.<p></p>

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

</div>  <a href=" " onclick="Fulltext(this);return false;">Смотреть полностью...</a></div>
вот скрипт
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<script type="text/javascript">
function createStyleCSS(CssParam){
var head,tagStyle;
head=document.getElementsByTagName("head")[0];
//head.getElementsByTagName("style");
tagStyle=document.createElement("style");
tagStyle.setAttribute("type","text/css");
tagStyle.innerHTML=CssParam;
head.appendChild(tagStyle);
}

function sliceText(){

createStyleCSS(".notVisible {display:none;}");//функциия задает переданные css свойства
	var lengthArray,endLen,resultText,findEndSymols,fullLink,AllClass;
// i love IE
if(typeof document.getElementsByClassName != 'function')AllClass=browserIE('sliceText');
//--------------
else AllClass=document.getElementsByClassName("sliceText");
var i=AllClass.length;

while(i--)
	{

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

		}


	}
}

function Fulltext(obj){
var element,i;
var ALLspan=obj.parentNode.getElementsByTagName("div");
i=ALLspan.length;
while(i--){
if(ALLspan[i].className=="notVisible"){
ALLspan=ALLspan[i];
break;
}
}
if(ALLspan.nodeType == 1){
   // ALLspan.style.display="inline";
ALLspan.setAttribute("style","-webkit-animation-play-state:running;display:inline;")
obj.parentNode.removeChild(obj);
}
else alert("Проблема при обработке span");
}
// ДЛЯ ИЕ вместо document.getElementsByClassName
function browserIE(FindClass){
//ie6 test
var Tagbod=document.getElementsByTagName('body')[0];
var allSpan=Tagbod.getElementsByTagName('*');
var arrElements=[];
var i=allSpan.length;
while(i--){

if(allSpan[i].className==FindClass){
arrElements.push(allSpan[i]);
}

}
return arrElements;

//---------------------------------------
}


</script>
<style type="text/css">
.text {
margin-top:20px;
overflow:hidden;
}
.notVisible {
		-webkit-animation-name:'fullText';
		-webkit-animation-duration: 1s;
		-webkit-animation-play-state:paused;

		}
@-webkit-keyframes 'fullText'{
		from {
			  font-size:50%;

			  }
		50%{
			font-size:70%;

			}

80%{
			font-size:90%;

			}
		to{
			font-size:100%;

}
		}
</style>
</head>

<body onload="sliceText();">
<div  class="sliceText">
Legend of Grimrock — это ролевая игра от студии Almost Human Games, которая также выступила и издателем. Проект вышел 11 апреля и стал самым продаваемым в Steam на прошлой неделе, при этом разработчики говорят, затраты на ее разработку уже окупились

</div>
<div  class="sliceText">
Десятка самых продаваемых игр прошлой недели: 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 class="sliceText">
Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).

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

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

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

</div><br>

<table>
  <tr>
	<td class="sliceText" width="700px" id="tdTest" style="border:1px solid black;"><p>Splash Damage в <a href="http://www.gamasutra.com/view/news/168760/Brink_developers_next_moves_Freetoplay_publishing_backend_support.php">интервью</a> Gamasutra удивляет — президент компании Пол Веджвуд (Paul Wedgwood) говорит, их шутер <strong>Brink</strong> продался тиражом более 2.5 млн. копий. А прибыль составила 120-140 млн. долларов. Однако всех этих денег студия не увидела, поскольку издателем выступала Bethesda.</p>
<p>С тех пор, говорит Веджвуд, Splash Damage поумнела и решила основать собственную компанию-издателя. Сейчас она называется WarChest. К тому же у SP появилась еще и Fireteam, компания, занимающаяся онлайн-сервисами для игр (что-то типа Steam).</p>
<p>Таким образом Splash Damage хочет владеть и полностью контролировать разработку и продвижение своих проектов.  Кстати о них. Компания переходит на модель free-to-play, которая не будет доить игроков. Руководство утверждает, что современные f2p больше наука о том как заработать с игроков денег, а не искусство, но Splash Damage будет делать бесплатные многопользовательские игры ААА уровня, не требующие доната для победы. Анонс их новой такой игры на PC обещают уже в этом году.</p>
<p>А мы напомним, что многопользовательский шутер <strong>Brink</strong> вышел на консоли и PC в мае 2011 года и <a href="http://gameway.com.ua/recensiyi/4116-brink-recenziya-obzor-review.html">получил</a> от GameWay 3 балла (по старой пятибалльной шкале), а на Metacritic игра собрала 70 очков.</p>
<p>В ноябре того же года <strong> Brink</strong> даже <a href="http://gameway.com.ua/igrovye-novosti/5265-novyy-patch-k-brink-dobavit-podderzhku-klanov-i-turnirov.html">не попадал</a> в список ста самых играемых игр на Steam. То есть в игру на PC играли одновременно не больше 200-300 человек во всем мире.</p>
</td>
  </tr>
</table><br>

</html>
как решить эту проблему?
единстенная идея которая пришла это :

сохранять структуру блока в строку , а строку в массив, т.е если текст выглядит так то
HTML:
<p>Namco Bandai показывает немного геймплея кооперативной игры Star Trek от студии Digital Extremes (Bioshock 2, Unreal Tournament, Dark Sector, The Darkness 2).</p>

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

<p>Напомним, Star Trek выйдет в начале 2013 года на PC и консоли, а здесь вы увидите минуту пре-альфа геймплея игры годичной давности.</p>
то его структура будет такая:
<p>кол-во символов между тегами,<p>кол-во символов между тегами,<span>кол-во символов между тегами,<p>кол-во символов между тегами -будет такая строка , а сама строка будет лежать в массиве.
вариант не самый легкий(как реализовать знаю), но вопрос:
стоит ли это того?
П.с еще маленький вопрос по кросс браузерности почему не работает в ИЕ (6-8) функция createStyleCSS()
почему на форуме нет бб кода для отображение js кода?
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Да и здесь вряд-ли ответят. Я, например, ни черта не понял, чего вы хотите? Если что-то наподобие аккордеона из одного элемента, то более проктального способа, чем ваш, не придумаешь. Попытайтесь понятнее объяснить, что вам надо.
 

cyber

Member
Регистрация
29.04.2012
Сообщения
13
Да и здесь вряд-ли ответят. Я, например, ни черта не понял, чего вы хотите? Если что-то наподобие аккордеона из одного элемента, то более проктального способа, чем ваш, не придумаешь. Попытайтесь понятнее объяснить, что вам надо.
что то вроде акардеона, типа раскрывающегося текста в вк,
НО проблема в том что хранить текст в двух копиях немогу т.е способ подмены по нажатию на ссылку не какит.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
типа раскрывающегося текста в вк
Вы это нарочно? Что такое это ваше "вк"?
И рассказ про невозможность "хранить текст в двух копиях" отнюдь не проясняет ситуацию.

Наверное, хватит уже ребусов! Напишите толком, что вы хотите получить, как это должно выглядеть и какой иметь функционал?
 

cyber

Member
Регистрация
29.04.2012
Сообщения
13
реши проблему тему можна закрывать.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ