Не работает IndexOf
У меня IE 6.0.
Пишу: s="123" a=s.IndexOf("2") Браузер пишет, что метод или свойство объекта не поддержваются. Почему так? |
Потому что метод или свойство объекта не поддерживается, как это ни странно. В JavaScript все наименования в camelStyle, т.е. первая буква всегда маленькая.
|
Спасибо!
|
indexOf не пашет по той же причине, проверял в IE8, opera, FF
for(var x = 0;x<Stroki.length;x++){ var Search = Stroki[x].substr(0,4); //alert(Search); var s=Stroki_cod[x].indexOf(Search); ...} вот что пишет опера: Uncaught exception: TypeError: Cannot convert 'Stroki_cod[x]' to object в ие6 работает прекрасно:blink: |
Цитата:
|
Цитата:
в общем-то одно и то же причем проблема не в методе, а конкретно в том, что ни один браузер не признает элемент массива объектом. не пашет так же и search Но по идее строка это же экземпляр класса String=>объект...со всеми методами и свойствами |
Цитата:
|
//делаем из текста блока массив строк 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++; } и какого типа содержимое в элементах массива Stroki получится в результате? по-моему все указывает на то, что там строка) з.ы. для Stroki_cod функция такая же |
Приведите минимальный неработающий скрипт, а не куски.
|
ну вот) выдрал тот самый кусок.Полный текст - и хтмл и скрипт. юзаю jQuery
В ие6 срабатывает как по маслу - опера шлет в даль <!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++; } //функция сверки строк for (var x=0;x<Stroki.length; x++) { var Search = Stroki[x].substr(0,4); var s=Stroki_cod[x].indexOf(Search, 0); if (s<0){} else {alert(Stroki[x]+"\n ------------------------------------- \n"+Stroki_cod[x]);} } $($('pre:contains(Поб)')[i]).removeAttr('id'); i++; } }); </script> </html> |
Вы уверены, что количество элементов в массивах 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, время: 22:33. |