Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает IndexOf (https://javascript.ru/forum/misc/2708-ne-rabotaet-indexof.html)

Kolyaj 31.08.2010 14:52

Вы уверены, что количество элементов в массивах Stroki и Stroki_cod одинаковое?

Jorixxx 31.08.2010 15:14

хмм...нет)хотя собственно это мне и нужно)чтобы каждой строке текста сопоставлялась соответствующая ей строка кода)
в общем написал вот такое:
function minimum(a,b){
	if(a>b){return b;}
	else{return a;}
	}
	var dlina=minimum(Stroki.length,Stroki_cod.length);
for (var x=0;x<dlina; x++)........

вроде опера не жалуется)
выходит количество строк разное...( ну тогда конечно несуществующие элементы массива объектами не являются...
буду дальше думать как пилить одинаково код и текст.спасибо;)
только остался вопрос почему ИЕ6 ел и с несовпадающим числом строк)вернее в ИЕ6 оно совпадает я проверил

Jorixxx 31.08.2010 15:37

Вложений: 5
вот такой код:
<!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=windows-1251" />
<title>Проверка свойств массива</title>
<script src="jquery-1.4.2.min.js"></script>
</head>
<body><PRE><HR color=#cc0033 noShade> бла   бла-бла      <B>Поб.1 </B> слово  текст  <B> .</B>
<HR color=#cc0033 noShade> 30/08  <B id=r>что-то там</B>     <B> хее </B>  гг  лл  <B>авыпрп </B> аывр  <B>павпы</B> апрп</PRE>
</body>
<script type="text/javascript">
	$(document).ready(function()
{
var perenos = /[\r\n\t\v\a]/m;
var perenos_html = /[\r||\n||\v]/m;

var Stroki = new Array();
var Stroki_cod = new Array();

var i=0;
while(1){
$($('pre:contains(Поб.1)')[i]).attr('id','id');

var tekst=$('pre#id').text();//текст блока
var cod=$('pre#id').html();//код блока
//alert(tekst+"\n-------------\n"+cod);
if(!tekst){break;}

//делаем из текста блока массив строк
var p = 0;
while(1)
{
var Stroka = perenos.exec(tekst);
if (Stroka==null){break;}
Stroki[p]=tekst.substr(0,perenos.lastIndex);
tekst=tekst.substr(perenos.lastIndex+1);
if (Stroki[p]=="\r"){continue;}
p++;
}

//делаем из кода блока массив строк
var p = 0;
while(1)
{
var Stroka = perenos_html.exec(cod);
if (Stroka==null){break;} 
Stroki_cod[p]=cod.substr(0,perenos_html.lastIndex);
cod=cod.substr(perenos_html.lastIndex+1);
if(Stroki_cod[p]=='\r'){continue;}
if(Stroki_cod[p].length<7){continue;}
p++;
}
alert("Dlina massiva texta: "+Stroki.length+"\n ------------------------------------- \n Coda: "+Stroki_cod.length);

$($('pre:contains(Поб)')[i]).removeAttr('id');
i++;
}
});

</script>
</html>


вот такие результаты:ie6,ie8,opera10,firefox3,chro me5.
кто не верит пусть проверит - браузеры что ли сами определяют каким символом делать перенос строки?О_о

Kolyaj 31.08.2010 15:43

Ваш код, как бы это помягче сказать, говно. Он ещё не раз где-нибудь взорвётся.

Jorixxx 31.08.2010 15:52

Цитата:

Сообщение от Kolyaj
Ваш код, как бы это помягче сказать, говно

я верю)очень даже охотно)5й час в жизни пишу явой)
но не плохо было бы прилагать советы по исправлению;)какие-то функции мб другие посмотреть или вообще другие идеи как сделать его менее взрывоопасным.вся задница в использовании регулярок. но если б я знал как это сделать по-умному - мб и получилось бы не такое уж и говно

Kolyaj 31.08.2010 16:04

Что сделать-то?

Jorixxx 31.08.2010 16:19

строке текста сопоставить соответствующую ей строку кода


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