>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Цикл с регами http://forum.mozilla-russia.org/viewtopic.php?id=13099 |
Masletso > 15-10-2006 12:25:54 |
Я опять со своими регами (наверное некоторых уже достал) но вот в чём проблема: Выделить код Код:<html> <head> <script> <!-- function mytest(){ var a = new Array(/green/gi, /white/gi, /black/gi, /yellow/gi, /red/gi); var b = new Array(/nicolay/gi, /sereja/gi, /vasea/gi, /ibrahim/gi, /petea/gi); var divs = document.getElementsByTagName("div"); var a2 = {}; var b2 = {}; var aa = []; var bb = []; var i,j; for (j=0; j<divs.length; j++){ for (i=0; i<a.length; i++){ if (a[i].test(divs[j].innerHTML)) a2['~' + j]=true; } for (i=0; i<b.length; i++){ if (b[i].test(divs[j].innerHTML)) b2['~' + j]=true; } } for(i in a2) { if(i.charAt(0)!='~') continue; aa.push(i.substr(1)); } for(i in b2) { if(i.charAt(0)!='~') continue; bb.push(i.substr(1)); } // zamena // if (aa.length!=0){ for (j=0; j<aa.length; j++){ var tempStr = divs[aa[j]].innerHTML; for (i=0; i<a.length; i++){ tempStr=tempStr.replace(a[i], (function(x) {return '<u>' + x + '</u>'})) } divs[aa[j]].innerHTML = tempStr; } } if (bb.length!=0){ for (j=0; j<bb.length; j++){ var tempStr = divs[bb[j]].innerHTML; for (i=0; i<b.length; i++){ tempStr=tempStr.replace(b[i], (function(x) {return '<u>' + x + '</u>'})) } divs[bb[j]].innerHTML = tempStr; } } } window.onload = mytest; //--> </script> </head> <body> <div> test green and black </div> <div> test green and black </div> <div> vasea da petea test</div> <div> i nicolay k tomu je </div> </body> И возникла проблема. Когда 2 дива с одинаковым содержимым, то оно не подчёркивает (как у нас с дивом 2) |
Anton > 15-10-2006 15:09:57 |
Похоже на баг, но в IE и Opera ситуация аналогичная. Чтобы работало, меняем Выделить код Код:... for (i=0; i<a.length; i++){ if (a[i].test(divs[j].innerHTML)) a2['~' + j]=true; } ... на Выделить код Код:... for (i=0; i<a.length; i++){ if (a[i].test(divs[j].innerHTML)) { a2['~' + j]=true; f=a[i].test(divs[j].innerHTML) } } ... |
Masletso > 15-10-2006 15:47:24 |
Спасибо, попробую. Если заработает с меня виртуальное пиво Добавлено Вск 15 Окт 2006 16:14:41 : А я кстати когда тестил, сначала подумал что проблема с регами, и просил выдавать алерт ответ функции test. Тогда он выдавал false, но подсвечивал Да... это баг получается |