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

Андрей38 04.09.2011 21:09

$(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) 
	}

http://szenprogs.ru/blog/jquery_vstr.../2010-10-13-89

http://myrusakov.ru/cikly-javascript.html
<!-- * http://myrusakov.ru/cikly-javascript.html-->
<script type="text/javascript">
for (i = 0; i < 30; i++) {
	  if (i <20) continue;
//  if (i == 10) break;
 // document.write( ' <div  id='+i+'> id= '+i+' </div>  ' )
  alert( ' <div  id='+i+'> id= '+i+' </div>  ' );
}
</script>

http://xhtml.co.il/ru/jQuery/toArray
http://xhtml.co.il/ru/jQuery/Типы/Массив
http://xhtml.co.il/ru/jQuery/get !!!!!!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  
  <script>

  $(document).ready(function(){
    $("*", document.body).click(function (e) {
      e.stopPropagation();
      var domEl = $(this).get(0);
    alert(domEl.tagName);
    });
  });
  </script>
  <style>
  span { color:red; }
  div { background:yellow; }
  </style>

</head>
<body>
  <span> </span>
  <p>In this paragraph is an <span>important</span> section</p>

  <div><input type="text" /></div>
</body>
</html>

http://szenprogs.ru/blog/jquery_vstr.../2010-10-13-89

Андрей38 19.10.2011 01:35

что быстрее _for c ленгзом или each?
<!DOCTYPE html>
<html>
<head>
  <style>
  span { color:red; }
  </style>

<script src="http://code.jquery.com/jquery-1.5.js" type="text/javascript"></script>
  
  <script type="text/javascript" language="javascript">
     $(document).ready(function(){
  var es=$('div')
      for (var i = 0; i <es.length; i++)
	   {
es.eq(i) .clone().wrap('p').appendTo ('#df')

	  
	   }  
    
  
     });
  </script>
<div id='df'> </div>
</head>
<body>
  Reversed - <span></span>
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
</body>
</html>


Ну и альтернатива этому--- c обычным each в связке с this...Что будет работать быстрее?
Какой вариант предпочтительнее , уважаемые гуру?..
.. а в сравнении с регуляр.выражением?..
И каким секундомером мерять:) ?


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