Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2014, 23:34
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Цикл for дублируется
Дублируется цикл. Выводит дважды переборку объекта.
p = 0;
													p++;

													for(var c in data){
														d = data[c];
														$('<p style="margin-left:35px"><span id="booksout'+p+'">'+d.content+'</span></p>').appendTo('#readeroutstandingbooks');
													}
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2014, 08:20
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

<html>
	<head> 
		<title>example</title>
	</head>

	<body>
		<div id="readeroutstandingbooks"></div>
		<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
		<script>
data = {
	'd1': {content: 1},
	'd2': {content: 2},
	'd3': {content: 3},
	'd4': {content: 4},
	'd5': {content: 5}
};

p = 0;

for(var c in data){
	p++;
	d = data[c];
	$('<p style="margin-left:35px"><span id="booksout'+p+'">'+d.content+'</span></p>').appendTo('#readeroutstandingbooks');
}

		</script>
	</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2014, 09:57
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

skrudjmakdak,
перенесение инкремента в внутрь цикла не решает проблему.
Ответить с цитированием
  #4 (permalink)  
Старый 26.09.2014, 10:00
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

На всякий пожарный приведу полный скрипт:
<html>
	<head> 
		<title>example</title>
	</head>

	<body>
<div id="readeroutstandingbooks"></div>
		<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
		<script>
$(document).ready(function() {
		var AddField = $("#cartaddbookbtn");
		var AddBook = $("#addBook");
		var f = 1;[/JS]
		$(AddField).click(function() {
			f++;
			   $('<div>')
			   .attr('id','book')
			   .append (
				   $('<div>')
				   .attr('id','booksearch')
				   .append(
					   $('<table >')
					   .css({width:'300px'})
					   .append(
						   $('<tr>')
						   .css({width:'300px'})
						   .append (
							   $('<td>')
							   .css({width: '163px'})
							   .append(
								  $('<p style="margin-left:15px">Штрих-код/книга</p>')
								)
							)
								
							.append (
							   $('<td>')
							   .css({width: '115px'})
							   .append(
								  $('<p><label for="books"><input style="width: 110px" type="text" name="books[]" id="if'+f+'" maxlength="8"/></label></p>')
								)
							)
						)
					)
				)
				
				.append (	
					$('<div>')
				   .attr('id','bookinfo'+f)
				   .append(
					   $('<div>')
					   .attr('id','bookitem')
					   .append(
						   $('<p style="margin-left:17px"><i><b><span id="span1_'+f+'"></span> <span id="span2_'+f+'"></span></b></i></p>')	
						)
						.append(
						   $('<p style="margin-left:17px"><span id="span3_'+f+'"></span></p>')
						)
				   )                                                       
				)
				  .appendTo('#cartitems')  
					
						var y = document.getElementById('if'+ f);;
						y.focus();
							y.onkeyup = y.onpaste = function(){
								var z = this;
								//alert ("Cкрипт создан" + f);
								setTimeout(function(){
									z.value = z.value.replace(/[^\d]/g, '');
									if (z.value.length == 8) {	
										var book_barcode = $("#if"+ f).val();
										//alert ("Данные уходят: " + book_barcode);

										$.ajax({
										  type: "POST",
										  data: "book_barcode=" + book_barcode,
										  url: "ajax/findbook",
										  dataType: "json",
										  success: function(data){
											if(data)
											{
												$('#bookinfo'+ f).animate({ height: "58px" }, 500);
												//var rese = JSON.stringify(data);
												//alert( "Прибыли данные: " + rese);
												var authorlastname = data.author_last_name;
												$("#span1_"+ f).text(authorlastname);
												var authorfirstname = data.author_first_name;
												$("#span2_"+ f).text(authorfirstname);
												var bookname = data.content;
												$("#span3_"+ f).text(bookname);
												//console.log (JSON.stringify(data));
											}
											else
											{
												$("#bookerror").css('display','inline');
											}
											
										  }
										});
										return false		
									}
								}, 0);
							};
					
						});
		
						var x = document.getElementById('newClient');
						var y = document.getElementById('if1');
							x.focus();
							x.onkeyup = x.onpaste = y.onkeyup = y.onpaste = function(){
								var z = this;
								setTimeout(function(){
									z.value = z.value.replace(/[^\d]/g, '');
									if (x.value.length == 8) {
														
										var reader_barcode = $("#newClient").val();
										//alert ("Данные уходят: " + reader_barcode);

										$.ajax({
										  type: "POST",
										  data: "reader_barcode=" + reader_barcode,
										  url: "ajax/finduser",
										  dataType: "json",
										  success: function(data){
											if(data)
											{		
												$('#readerinfo').animate({ width: "400px" }, 500);
												$("#titleinforeader").css('display','inline');
												$("#readerinfoitem").css('display','inline');
												$("#readeroutstandingbooks").css('display','inline');
													var rese = JSON.stringify(data);
													//alert( "Прибыли данные: " + rese);
													var readerlastname = data.q.user_last_name;
													$("#readerlastname").text(readerlastname);
													var readerfirstname = data.q.user_first_name;
													$("#readerfirstname").text(readerfirstname);
													var readerpatronymic = data.q.user_patronymic;
													$("#readerpatronymic").text(readerpatronymic);
													
													delete data.q;
													
													p = 0;
													for(var c in data){
														p++;
														d = data[c];
														$('<p style="margin-left:35px"><span id="booksout'+p+'">'+d.content+'</span></p>').appendTo('#readeroutstandingbooks');
													}
													
													alert('Отработало');	
													//console.log (JSON.stringify(data));
											}

											else
											{
													$('#addnewreader').animate({ height: "146px" }, 500);
													$('.noreader').animate({marginTop: "-=34px"},500);
													$("#new_reader_item").css('display','inline');
													$("#addnewreaderbtn").css('display','inline');
											}
										  }
										});

										y.focus();
									}

									if (y.value.length == 8) {	
										var book_barcode = $("#if1").val();
										//alert ("Данные уходят: " + book_barcode);

										$.ajax({
										  type: "POST",
										  data: "book_barcode=" + book_barcode,
										  url: "ajax/findbook",
										  dataType: "json",
										  success: function(data){
											if(data)
											{
												$('#bookinfo').animate({ height: "58px" }, 500);
												//var rese = JSON.stringify(data);
												//alert( "Прибыли данные: " + rese);
												var authorlastname = data.author_last_name;
												$("#span1_1").text(authorlastname);
												var authorfirstname = data.author_first_name;
												$("#span2_1").text(authorfirstname);
												var bookname = data.content;
												$("#span3_1").text(bookname);
												//console.log (JSON.stringify(data));
											}
											else
											{
												$("#bookerror").css('display','inline');
											}
											
										  }
										});
	
									}
								}, 0);
							};
			
	});	</html>
Ответить с цитированием
  #5 (permalink)  
Старый 26.09.2014, 10:22
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

ajax-запрос сколько раз вызывается, который возвращает эти данные? Скорее всего обработчик событий срабатывает несколько раз.
Ответить с цитированием
  #6 (permalink)  
Старый 26.09.2014, 10:34
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

один раз вызывается
Ответить с цитированием
  #7 (permalink)  
Старый 26.09.2014, 10:49
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Значит ответ от сервера содержит уже продублированные данные.
Ответить с цитированием
  #8 (permalink)  
Старый 26.09.2014, 10:54
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Сообщение от Lobezki
один раз вызывается
имхо кто то нагло врет

в этом месте два события
y.onkeyup = y.onpaste = function(){ ....
Ответить с цитированием
  #9 (permalink)  
Старый 26.09.2014, 10:55
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Сообщение от MallSerg Посмотреть сообщение
имхо кто то нагло врет

в этом месте два события
y.onkeyup = y.onpaste = function(){ ....
так оно у меня по разному ввобще. Может и два может и три раза и четыре. Как захочет, так и выдаёт. было бы в этом проблема 2 раза только обрабатывало.

Последний раз редактировалось Lobezki, 26.09.2014 в 11:00.
Ответить с цитированием
  #10 (permalink)  
Старый 26.09.2014, 11:07
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

MallSerg,
спасибо огромное. Именно в этом была ошибка.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл завершается не дожидаясь выполнения функции leonoff jQuery 2 13.08.2014 16:02
Как подчинить себе цикл wreder jQuery 17 20.11.2013 22:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
как сделать чтобы цикл не запускался второй раз Brook Events/DOM/Window 5 12.05.2013 21:43
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 13:58