powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / помогите с циклом
1 сообщений из 1, страница 1 из 1
помогите с циклом
    #38195124
angel__2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть страница. в ней клонируемый блок. внутри блока тоже есть клон.
есть Блок и есть строки в блоке. 3 строки в блоке постоянны и 1 строка клонируется.

не получается сформировать цикл в скрипте чтобы был достоверный результат о количестве блоков и строк в них.
допустим мы заполнили первый блок, добавили внутри блока 2 значения. затем решил создать еще один блок и добавили в нем 3 значения.
Код: html
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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;"/>
    <style type="text/css">
        ${CSS!".body {font-family:sans-serif;}"}
    </style>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>	
	
<body>


<fieldset id = "klone_block_family"  name='klone_block_family' style="width: 700px;border: 0">

<fieldset id = "member" name='member' class="member" style="width: 680px">


<div id = "klone_block_children_2" name='klone_block_children_2' class="klone_block_children_2">

<table width="754" id="trustee_table_2" name="trustee_table_2"  border="0" cellpadding='2' cellspacing='2'>
<tr><td colspan='2'><i>Адресные сведения мест осуществления деятельности</i></td></tr>
<tr><td width="250">Почтовый индекс<font color="red">*</font></td><td width="500"><input type='text' required name="lindex" id="lindex" value="${lindex}" style="margin: 2px; width: 100%;" class="input_block"></td></tr> 
<tr><td width="250">Почтовый адрес <font color="red">*</font></td><td width="500"><input type='text' required name="add" id="add" value="${add}" style="margin: 2px; width: 100%;" class="input_block"></td></tr> 
<tr><td width="250">Адрес местонахождения <font color="red">*</font></td><td width="500"><input type='text' required name="addr" id="addr" value="${addr}" style="margin: 2px; width: 100%;" class="input_block"></td></tr> 
<tr><td colspan='2'><i>Перечень заявляемых работ (услуг) для осуществления медицинской деятельности</i></td></tr> 
</table>

<div id = "children_2" name='children_2' class="children_2">
Работы (услуги) <font color="red">*</font>
<input required name="servicelist" id="servicelist" style="margin: 2px; width: 500; vertical-align: top;" value="${servicelist}">
<!--<input type="button" id="button_child_2_del" class="button_child_2_del" value="X" >-->
<button name='button_child_2_del' id="button_child_2_del" class="button_child_2_del">Удалить</button>
<hr>
</div>
</div>
<button  class="button_child_2_add" id="button_child_2_add" type="button" > Добавить запись</button>
<br/>


<input type="button" id="button_1" class="button_1" onclick="if(document.getElementById('klone_block_family').getElementsByTagName('fieldset').length>1) document.getElementById('klone_block_family').removeChild(this.parentElement);" value="Удалить блок" >
</fieldset>
</fieldset>

<button  class="button_2" name='button_2' id='button_2' type="button" onclick="clone_family('klone_block_family');" >Добавить блок</button>
<br/>
 

</div>
</div>
	

<button type='button' name='button222' id='button222'>сформировать XML</button>
<textarea name='xml' id='xml' value='${xml}' style="margin: 2px; width: 100%;"></textarea>
<hr>

</form>



<script type="text/javascript">
$(document).ready(function () {
	$("#button222").live('click',function(event) { //  $("#outcome").click(function () 
		var str;
		var str_j;
		str="<objects>";
		str_j="";
		$('#member  [name="klone_block_children_2"]').each(function (){
		//$('#member').each(function (){
			str=str+"<object>";
			str=str + "<lindex>" + $(this).find('[name="lindex"]').val()+ "</lindex>" ;
			str=str + "<add>"  + $(this).find('[name="add"]').val()+ "</add>";
			str=str + "<addr>"  + $(this).find('[name="addr"]').val()+ "</addr>";
			//str=str + "<servicelist>"  + $(this).find('[name="xml_j"]').val()+ "</servicelist>";
			
			$('#klone_block_children_2  [name="children_2"]').each(function (){
			str_j=str_j + "<servicelist>"  + $(this).find('[name="servicelist"]').val()+ "</servicelist>";
			});
			str=str + str_j;
			str=str+"</object>";
			$("#xml").val($("#xml").val() + str + " ");
		});
		str=str+"</objects>";
		$("#xml").val(str);
	});
});
</script>





<script type="text/javascript">
$(document).ready(function() {

//Добавить элемент  $(this).siblings(".klone_block_children_2").find("#children_2").eq(0).find('input').each(function(index){
	$("#button_child_2_add").live('click',function(event)
		{
		$(this).addClass("button_child_2_add");
		var i=$(this).siblings(".klone_block_children_2").find("#children_2").length;		// число блоков div #children_2 в соседнем для нажатой кнопки блоке с классом .klone_block_children_2
		// клонирует первый блок div #children_2 и вставляет его после последнего
		$(this).siblings(".klone_block_children_2").find("#children_2").eq(0).clone(true).insertAfter($(this).siblings(".klone_block_children_2").find("#children_2").eq(i-1));	
		// обнуляем поля в новом блоке
		$(this).siblings(".klone_block_children_2").find("#children_2").eq(i).find('input').each(function(index){
        	if ($(this).val()!="Удалить") $(this).val("");
		});
		}) ; 
		
});		
</script>

<!-- при нажатии на кнопку "Удалить данные по ребенку" -->
<script type="text/javascript">
$(document).ready(function() {
//Удалить элемент  
	$("#button_child_2_del").live('click',function()
		{
		var c=$(this).parents('div#klone_block_children_2').find("#children_2").length;	// кол-во div-ов в блоке "Член семьи"
		var m=$(this).parents('div').find("#children_2").length;						// кол-во div-ов всего во всех блоках "Член семьи"
		
		if ($(this).parents('div#klone_block_children_2').find("#children_2").length > 1)	// кол-во div-ов всего во всех блоках "Член семьи"
			{$(this).parent().remove();}													// прямой родитель
		}) ; 
		
});
</script>


<script type="text/javascript">
// Функция добавляет клонируемый блок "Сведения о других членах семьи"
function clone_family(klone_block_family)
{
var firstForm = document.getElementById(klone_block_family);	// ссылка на элемент
//вычисляем первый div который будем копировать
var form1 = document.getElementById(klone_block_family).getElementsByTagName('fieldset')[0]	// начиная с него будут клонироваться блоки
	newElem = form1.cloneNode(true)
	// Очистить новый блок
	for (var i=0;i<newElem.getElementsByClassName('input_block').length;i++)
		{
			newElem.getElementsByClassName('input_block')[i].value='';
			newElem.getElementsByClassName('input_block')[i].checked =false; 			// снимаем галку
		}
	for (var i=0;i<newElem.getElementsByTagName('select').length;i++)
		{
		newElem.getElementsByTagName('select')[i].value='0';
		}
	//вставить новый блок
	firstForm.appendChild(newElem);
	
	// если убрать ф-цию, то при добавлении нового блока "Член семьи" все input.datepicker 
	// при невключенном чекбоксе "Член семьи является опекуном(попечителем)" станут активными
	$(".member #is_trustee_2").each(function(index){
		$(this).change();
	});
	
	
	var j = $("#klone_block_family .member").length;	// число блоков "Член семьи"
	// в последнем (только что добавленном блоке "Член семьи") удаляем все, кроме первого (slice(1)) блоки #children_2
	$("#klone_block_family .member").eq(j-1).find("#children_2").slice(1).remove();
	// очищаем поля в только что добавленном блоке
	$("#klone_block_family .member").eq(j-1).find("#children_2 input").each(function(index){
        if ($(this).val()!="Удалить") $(this).val("");
		});
};

// Функция добавляет клонируемый блок данных по заявителю по запросу "Запрос-справка о полученных за шесть предыдущих месяцев перед обращением денежных средствах, выплачиваемых опекуну (попечителю) на содержание лиц, находящихся под опекой (попечительством) "
function clone_children(klone_block_children)
{
var firstForm = document.getElementById(klone_block_children);	// ссылка на элемент
//вычисляем первый div который будем копировать
var form1 = document.getElementById(klone_block_children).getElementsByTagName('fieldset')[0]	// начиная с него будут клонироваться блоки
	newElem = form1.cloneNode(true)
	// Очистить новый блок
	for (var i=0;i<newElem.getElementsByClassName('input_block').length;i++)
	{newElem.getElementsByClassName('input_block')[i].value=''}
	//вставить новый блок
	firstForm.appendChild(newElem);
};
</script>


</body>
</html>



при выполнении этого скрипта



Код: javascript
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.
<script type="text/javascript">
$(document).ready(function () {
	$("#button222").live('click',function(event) { //  $("#outcome").click(function () 
		var str;
		var str_j;
		str="<objects>";
		str_j="";
		$('#member  [name="klone_block_children_2"]').each(function (){
		//$('#member').each(function (){
			str=str+"<object>";
			str=str + "<lindex>" + $(this).find('[name="lindex"]').val()+ "</lindex>" ;
			str=str + "<add>"  + $(this).find('[name="add"]').val()+ "</add>";
			str=str + "<addr>"  + $(this).find('[name="addr"]').val()+ "</addr>";
			
			// цикл
			$('#klone_block_children_2  [name="children_2"]').each(function (){
			str_j=str_j + "<servicelist>"  + $(this).find('[name="servicelist"]').val()+ "</servicelist>";
			});
/*
// если убрать цикл а оставить так хватает только первый инпут servicelist остальные игнорирует
str=str + "<servicelist>"  + $(this).find('[name="servicelist"]').val()+ "</servicelist>";
*/
			str=str + str_j;
			str=str+"</object>";
			$("#xml").val($("#xml").val() + str + " ");
		});
		str=str+"</objects>";
		$("#xml").val(str);
	});
});
</script>



получится структура вида

Код: xml
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.
<objects>
<object>
<lindex>Почтовый индекс</lindex>
<add>Почтовый адрес</add>
<addr>Адрес местонахождения</addr>
<servicelist>111</servicelist>
<servicelist>222</servicelist>
<servicelist>333</servicelist>
<servicelist>444</servicelist>
<servicelist>555</servicelist>
</object>
<object>
<lindex>Почтовый индекс2</lindex>
<add>Почтовый адрес2</add>
<addr>Адрес местонахождения2</addr>
<servicelist>111</servicelist>
<servicelist>222</servicelist>
<servicelist>333</servicelist>
<servicelist>444</servicelist>
<servicelist>555</servicelist>
<servicelist>111</servicelist>
<servicelist>222</servicelist>
<servicelist>333</servicelist>
<servicelist>444</servicelist>
<servicelist>555</servicelist>
</object>
</objects>



а должна

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<objects>
<object>
<lindex>Почтовый индекс</lindex>
<add>Почтовый адрес</add>
<addr>Адрес местонахождения</addr>
<servicelist>111</servicelist>
<servicelist>222</servicelist>
</object>
<object>
<lindex>Почтовый индекс2</lindex>
<add>Почтовый адрес2</add>
<addr>Адрес местонахождения2</addr>
<servicelist>333</servicelist>
<servicelist>444</servicelist>
<servicelist>555</servicelist>
</object>
</objects>



тянутся левые значения. помогите переделать скрипт.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / помогите с циклом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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