Вход

Просмотр полной версии : Цикл while + немного jquery


Tonik a.k.a Mademax
21.08.2011, 00:26
Здравствуйте, есть скрипт который выставляет на событие нажатия кнопок функции:
$(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
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
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_vstroennye_funkcii/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_vstroennye_funkcii/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...Что будет работать быстрее?
Какой вариант предпочтительнее , уважаемые гуру?..
.. а в сравнении с регуляр.выражением?..
И каким секундомером мерять:) ?