Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Цикл while + немного jquery (https://javascript.ru/forum/events/20874-cikl-while-nemnogo-jquery.html)

Tonik a.k.a Mademax 21.08.2011 00:26

Цикл while + немного jquery
 
Здравствуйте, есть скрипт который выставляет на событие нажатия кнопок функции:
$(document).ready(function () {
		var i = 0; // создаем переменную i
		while(i < 4){ // делать пока i меньше 4
			$("#test"+i).click(function(){viewInfo(i)}) // для каждой кнопки выставлем функцию с параметром её id
			i++ //увеличиваем счетчик
		}
	
		
		})
	function viewInfo(id) //собственно ,сама функция вывода id
	{
		alert(id) 
	}

и вот сами кнопки
<button id='test1'></button>
<button id='test2'></button>
<button id='test3'></button>
<button id='test4'></button>

при нажатии на любую кнопку выводит "4".Почему?
Цикл for аналогично...

melky 21.08.2011 00:29

почитайте статью "замыкания", это поможет :)

Tonik a.k.a Mademax 21.08.2011 00:33

не очень помогло,но что нибудь по данному примеру посоветуйте

melky 21.08.2011 00:43

$(document).ready(function () {
		var i = 0; // создаем переменную i
		while(i < 4){ // делать пока i меньше 4
*!*
(function(i){
*/!*
			$("#test"+i).click(function(){viewInfo(i)}) // для каждой кнопки выставлем функцию с параметром её id
*!*
})(i++);
*/!*	
	}
	
		
		})
	function viewInfo(id) //собственно ,сама функция вывода id
	{
		alert(id) 
	}

B@rmaley.e><e 21.08.2011 11:07

melky, бесконечный цикл.
Нужно поменять строки 6 и 7 местами.

melky 21.08.2011 12:08

угу. поменял

не подумал об этом )

nikita.mmf 21.08.2011 14:05

$(document).ready(function () {
  for ( var i = 4; i--; ) {
    $( "#test" + i ).bind( 'click', { id : i }, function ( e ) { viewInfo( e.data.id ); })
  }
};
function viewInfo( id ) {
  alert( id ) ;
}

Андрей38 04.09.2011 19:37

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 121579)
melky, бесконечный цикл.
Нужно поменять строки 6 и 7 местами.

$(document).ready(function () {
var i = 0; // создаем переменную i
while(i < 4){ // делать пока i меньше 4
(function(i){
$("#test"+i).click(function(){viewInfo(i)}) // для каждой кнопки выставлем функцию с параметром её id
})(i++);
}


})
function viewInfo(id) //собственно ,сама функция вывода id
{
alert(id)
}


..как остановить по достижении 4 ? У меня не получается.
И самое нужное_ можна ли с помощью while сделать ---
<div id='text'> xxx</div>
var i=$('#text').text()
var2=('xxx')

while(i !=var2){
alert('в это время работает другое ')
}

если оно ( while )только с числами работает,что тогда применить ? Или такое сэтИнтервалом решеться?Но и его не могу ОСТАНОВИТЬ если 2 переменные стают одинаковыми...Или применить сэтИнтервалом с IF ?..Тогда не могу остановить после его запуска

melky 04.09.2011 20:27

if (i == 4) break
например

Андрей38 04.09.2011 20:33

Цитата:

Сообщение от melky (Сообщение 124784)
if (i == 4) break
например

Огромнейшее СПАСИБО :thanks: :thanks: :thanks: !сейчас подставлю

http://www.w3schools.com/JS/js_break.asp
http://myrusakov.ru/cikly-javascript.html

http://www.codenet.ru/webmast/js/operators.php


Часовой пояс GMT +3, время: 00:27.