powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Глюк в регулярном выражении
4 сообщений из 4, страница 1 из 1
Глюк в регулярном выражении
    #34511598
JS-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть страница:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
<html>
	<head>
		<script language="javascript">
var vcount =  0 ;

function addLine() 
{
	if (vcount >= 24 )
	{
		window.alert('Count cannot be more than 25!');
	}
	else
	{
		c=document.getElementById('curnum').value++;
		s = document.getElementById('myrow').innerHTML;
		inp = '<table border="0"><tr nomer="['+c+']"><td width="350"><input type="text" name="var_'+c+'" size="50"></td><td><input type="button" onClick="rmLine('+c+');" name="drop" value=" − "></td></tr></table>';
		document.getElementById('myrow').innerHTML=s+inp;
		vcount++;
		twoLasts();
	}
}

function rmLine(q) 
{
	vcount--;
	s=document.getElementById('myrow').innerHTML; 
	s=s.replace(/[\r\n]/g,''); 
	re=new RegExp('<tr nomer="?\\['+q+'.*?<\\/tr>','gi'); 
	s=s.replace(re,''); 
	document.getElementById('myrow').innerHTML=s;
	twoLasts();
}

function twoLasts()
{
	lines = document.getElementsByName('drop');
	for (i =  0 ; i < lines.length; i++)
	{
		lines[i].disabled = (lines.length <=  2 ) ? true : false;
	}
	document.getElementById('v_sum').innerHTML=vcount;
}

function dropAll()
{
	if (window.confirm('Reset all?')==true)
	{
		document.getElementById('myrow').innerHTML='';
		vcount= 0 ;
		document.getElementById('curnum').value= 0 ;
		addLine();
		addLine();
		document.getElementById('step1').reset();
	}
}
</script>
	</head>
	<body onload="document.getElementById('curnum').value=0; addLine(); addLine();">
		<form name="step1" method="get" action="second.php" onSubmit="return checkPost();">
			<table>
				<tr><td colspan= 2 >Fields (<span id="v_sum"> 2 </span>):</td></tr>
			</table>
			<table border="0">
					<tr>
						<td width="350"><input type="button" onClick="addLine();" value=" Add "></td>
						<td><input type="button" onClick="dropAll();" value="Reset"></td>
					</tr>
			</table>
			<span id="myrow"></span>
<input type="hidden" value="0" name="curnum">
		</form>
	</body>
</html>

При добавлении нескольких строк, а потом их удалении (" - ") иногда удаляется больше. чем одна строка. Проблема скрывается в функции rmLine(), но не могу понять, где именно. А иногда еще хуже бывает - ошибка и броузер закрывается. Я пробовал пока только на IE.

Может кто подскажет, как лучше организовать "проблемную" функцию?
...
Рейтинг: 0 / 0
Глюк в регулярном выражении
    #34513037
Ku-root
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, можно тут по проще - без RegExp :))
Я вот так вот например предлагаю.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
<html>
	<head>
		<script language="javascript">
var vcount =  0 ;

var my_lines=new Array();
var current_id = - 1 ;
function reMake()
{
	var value;
	var i;
	var code;
	var html;
	var id;
	var cnt;

	html='';
	cnt= 0 ;
	for(i in my_lines)
	{
		value='';
		id='values_'+i;
		if(document.getElementById(id))
		{
			value=document.getElementById(id).value;
		}
		if(my_lines[i] ==  1 )
		{
			html=html+"<tr><td>aaa</td><td><input name='aaa[]' id='values_"+i+"' value='"+value+"'></td><td><input type='button' onClick='rmLine("+i+")' value='-'></td></tr>";
			cnt=cnt+ 1 ;
		}
	}
	document.getElementById('table').innerHTML=html;
	document.getElementById('v_sum').innerHTML=cnt;
}

function addLine() 
{
	current_id=current_id+ 1 ;
	my_lines[current_id]= 1 ;

	reMake();
}

function rmLine(ID)
{
	my_lines[ID]= 0 ;
	reMake();
}

function dropAll()
{
	var i;
	for(i in my_lines)
	{
		my_lines[i]= 0 ;
	}
	reMake();
}

</script>
	</head>
	<body onload="document.getElementById('curnum').value=0; addLine(); addLine();">
		<form name="step1" method="get" action="second.php" onSubmit="return checkPost();">
			<table>
				<tr><td colspan= 2 >Fields (<span id="v_sum"> 2 </span>):</td></tr>

			</table>
			<table border="0">
					<tr>
						<td width="350"><input type="button" onClick="addLine();" value=" Add "></td>
						<td><input type="button" onClick="dropAll();" value="Reset"></td>
					</tr>
			</table>
			<span id="myrow"></span>
			<table id='table'>

			</table>
		</form>
	</body>
</html>
...
Рейтинг: 0 / 0
Глюк в регулярном выражении
    #34513079
Ku-root
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только ни мой, ни ваш вариант не будут работать с
Код: plaintext
<input type='file'>
по понятным причинам
...
Рейтинг: 0 / 0
Глюк в регулярном выражении
    #34513309
JS-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!

Ku-rootТолько ни мой, ни ваш вариант не будут работать с
Код: plaintext
<input type='file'>
по понятным причинам
Да это и не нужно :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Глюк в регулярном выражении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]