Вы уверены, что количество элементов в массивах Stroki и Stroki_cod одинаковое?
|
хмм...нет)хотя собственно это мне и нужно)чтобы каждой строке текста сопоставлялась соответствующая ей строка кода)
в общем написал вот такое:
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 оно совпадает я проверил |
Вложений: 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. кто не верит пусть проверит - браузеры что ли сами определяют каким символом делать перенос строки?О_о |
Ваш код, как бы это помягче сказать, говно. Он ещё не раз где-нибудь взорвётся.
|
Цитата:
но не плохо было бы прилагать советы по исправлению;)какие-то функции мб другие посмотреть или вообще другие идеи как сделать его менее взрывоопасным.вся задница в использовании регулярок. но если б я знал как это сделать по-умному - мб и получилось бы не такое уж и говно |
Что сделать-то?
|
строке текста сопоставить соответствующую ей строку кода
|
| Часовой пояс GMT +3, время: 00:20. |