Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2011, 12:06
Кандидат Javascript-наук
Отправить личное сообщение для LRCenter Посмотреть профиль Найти все сообщения от LRCenter
 
Регистрация: 22.06.2009
Сообщений: 117

Номера строк и 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>
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2011, 13:52
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от LRCenter
В чем причина отсутствия кроссбраузерности в данном случае?
Вот в этом...

<!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>
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2011, 13:59
Кандидат Javascript-наук
Отправить личное сообщение для LRCenter Посмотреть профиль Найти все сообщения от LRCenter
 
Регистрация: 22.06.2009
Сообщений: 117

ksa, ваш пример так же не работает в Chrome и Firefox.
А зачем в начале документа закомментированые ссылки на jQuery?
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2011, 14:23
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от LRCenter
ваш пример так же не работает в Chrome и Firefox
Разумеется! Поскольку я лишь показал почему не работает...

Сообщение от LRCenter
А зачем в начале документа закомментированые ссылки на jQuery?
Это потому, что некоторые (например ты) не делают полные примеры, а выкладывают огрызли и всякого рода "Лего"...
Вот и приходится самому все собирать в кучу. Так вам еще и не так собрал! Ну дают...
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2011, 14:26
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Как вариант использовать такое...

<!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>

Но в этом варианте "не видно" последнюю строчку...
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2011, 14:47
Кандидат Javascript-наук
Отправить личное сообщение для LRCenter Посмотреть профиль Найти все сообщения от LRCenter
 
Регистрация: 22.06.2009
Сообщений: 117

ksa, Спасибо!
Разобрался, исправил момент с отображением последней строки, даже сделал одну запасную на всякий

Приведу лишь исправленную функцию.

function redraw(){ 
	ex = new String(); 
	for(i=1;i<=new_nums+2;i++){ex+=i+"<br />";} 
	document.getElementById("holder").innerHTML=ex;
}
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2011, 14:49
Кандидат Javascript-наук
Отправить личное сообщение для LRCenter Посмотреть профиль Найти все сообщения от LRCenter
 
Регистрация: 22.06.2009
Сообщений: 117

Так и не понял зачем jQuery?
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2011, 14:59
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от LRCenter
Так и не понял зачем jQuery?
Ты тут не один.
Для другого "Лего" я его выну из коментария и всего делов - готов очередной пример...
Ответить с цитированием
  #9 (permalink)  
Старый 09.11.2011, 15:09
Кандидат Javascript-наук
Отправить личное сообщение для LRCenter Посмотреть профиль Найти все сообщения от LRCenter
 
Регистрация: 22.06.2009
Сообщений: 117

А, понятно! Это у вас типа заготовка такая
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2011, 15:53
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от LRCenter
типа заготовка такая
Угу...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Получить размеры рабочей области окна в Chrome unclechu Events/DOM/Window 1 13.09.2011 02:37
Выпадающее меню не работает в Chrome Bangoo jQuery 1 21.03.2011 20:33
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 15:12
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35