Номера строк и Chrome
Здравствуйте. Есть простой скрипт счетчика строк. При соответствующей разметке отображает номера строк, как в редакторе кода.
Все прекрасно работает в Opera, но не работает в хроме и Firefox. В чем причина отсутствия кроссбраузерности в данном случае? <script language='JavaScript'> var new_nums=0; var old_nums=0; function startCounter(){ check(); timerID = setTimeout("startCounter()", 10);} function redraw(){ ex = new String(); for(i=1;i<=new_nums;i++){ex+=i+"<br>";} document.getElementById("holder").innerHTML=ex;} function check(){ s=new String(document.getElementById('iLines').value); ar=s.split("\r\n"); new_nums=ar.length; if(new_nums != old_nums){ old_nums=new_nums; redraw(); }else{ document.getElementById("holder").scrollTop=document.getElementById("iLines").scrollTop;}} </script> <table border=0> <tr> <td valign='top' width=30> <div id='holder' style='height:400px;overflow:hidden;font-family:Courier New;font-size:11px;line-height:16px;padding-top:3px'>1</div> </td> <td> <textarea id='iLines' name='text' style='overflow:auto;height:400px;width:95%;' wrap='OFF'>111</textarea> </td> </tr> </table> <script language='JavaScript'>startCounter();</script> |
Цитата:
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> var new_nums=0; var old_nums=0; function startCounter(){ check(); timerID = setTimeout(startCounter, 10); }; function redraw(){ ex = new String(); for(i=1;i<=new_nums;i++){ex+=i+"<br>";} document.getElementById("holder").innerHTML=ex; }; function check(){ s=new String(document.getElementById('iLines').value); ar=s.split("\r\n"); *!* new_nums=ar.length; */!* alert(new_nums); if (new_nums != old_nums){ old_nums=new_nums; redraw(); } else { document.getElementById("holder").scrollTop=document.getElementById("iLines").scrollTop; } }; </script> </head> <body> <table border=0> <tr> <td valign='top' width=30> <div id='holder' style='height:400px;overflow:hidden;font-family:Courier New;font-size:11px;line-height:16px;padding-top:3px'>1</div> </td> <td> <textarea id='iLines' name='text' style='overflow:auto;height:400px;width:95%;' wrap='OFF'>111</textarea> </td> </tr> </table> <button onclick='check()'>Go</button> <script language='JavaScript'> //startCounter(); </script> </body> </html> |
ksa, ваш пример так же не работает в Chrome и Firefox.
А зачем в начале документа закомментированые ссылки на jQuery? |
Цитата:
Цитата:
Вот и приходится самому все собирать в кучу. Так вам еще и не так собрал! :D Ну дают... |
Как вариант использовать такое...
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> var new_nums=0; var old_nums=0; function startCounter(){ check(); timerID = setTimeout(startCounter, 10); }; function redraw(){ ex = new String(); for(i=1;i<=new_nums;i++){ex+=i+"<br>";} document.getElementById("holder").innerHTML=ex; }; function check(){ var s=document.getElementById('iLines').value; ar=s.match(/\n/g); new_nums=(ar)? ar.length: 1; if (new_nums != old_nums){ old_nums=new_nums; redraw(); } else { document.getElementById("holder").scrollTop=document.getElementById("iLines").scrollTop; } }; </script> </head> <body> <table border=0> <tr> <td valign='top' width=30> <div id='holder' style='height:400px;overflow:hidden;font-family:Courier New;font-size:11px;line-height:16px;padding-top:3px'>1</div> </td> <td> <textarea id='iLines' name='text' style='overflow:auto;height:400px;width:95%;' wrap='OFF'>111</textarea> </td> </tr> </table> <button onclick='check()'>Go</button> <script language='JavaScript'> startCounter(); </script> </body> </html> Но в этом варианте "не видно" последнюю строчку... :( |
ksa, Спасибо!
Разобрался, исправил момент с отображением последней строки, даже сделал одну запасную на всякий :) Приведу лишь исправленную функцию. function redraw(){ ex = new String(); for(i=1;i<=new_nums+2;i++){ex+=i+"<br />";} document.getElementById("holder").innerHTML=ex; } |
Так и не понял зачем jQuery? :blink:
|
Цитата:
Для другого "Лего" я его выну из коментария и всего делов - готов очередной пример... ;) |
А, понятно! Это у вас типа заготовка такая ;)
|
Цитата:
|
Часовой пояс GMT +3, время: 01:24. |