如何在jquery的循环中单击一次获取值?

时间:2018-11-01 05:30:51

标签: javascript jquery html

实际上,我使for loop正常工作,但是现在我想一次单击按钮就获得循环值,但是我无法获得。怎么了?

当我单击按钮时,我得到10分,但是我想得到一个一个,就像我第一次单击按钮时一样,当我单击按钮时它是2分,然后是3分。

 $(document).ready(function(){
var i;
$('button').click(function(){
         for( i=1; i<=10; i++)
             $(this).text(i);
     });
    alert(i);
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<button>1</button>

答案将不胜感激!

5 个答案:

答案 0 :(得分:3)

您不能为此使用for循环(除非您await构造了Promises,这有点令人费解)–而是递增并提醒i在每次处理程序调用之前,直到第十个:

let i = 2;
$('button').click(function() {
  if (i <= 10) {
    console.log(i);
    $(this).text(i);
    i++;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<button>1</button>

如果您感到好奇,可以在Promise循环中使用for方式:

const button = $('button');
let i = 2;
const resolves = [];
const promises = Array.from(
  { length: 10 },
  (_, i) => new Promise((resolve) => {
    resolves.push(resolve);
  })
);
(async () => {
  for (let i = 0; i < 9; i++) {
    await promises[i];
    button.text(i + 2);
  }
})();

button.on('click', () => {
  if (resolves.length) resolves.shift()();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<button>1</button>

答案 1 :(得分:2)

for loop的用途与您的用例不同。您必须在每次单击时增加单个变量并显示在内部按钮。

var i =1;
$('#button').click(function(){
   if(i<10)i++;
   $(this).attr('value',i); 
});
// This is how you could have acheived through loop , but not recommended because of extra memory and calculation.
var k =1;
$('#loopbutton').click(function(){
   k++;
   for(j=1;(j<=k && j<=10);j++){
    $(this).attr('value',j); 
   }
   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="button" id="button" value="1" />
<h3>Now Using For loop</h3>
<input type="button" id="loopbutton" value="1" />

答案 2 :(得分:0)

您将在每次单击按钮时执行整个循环。试试这个:

$(document).ready(function(){
  var i = 0;
  $('button').click(function(){
    i++;
    $(this).text(i);
    alert(i);
  })

答案 3 :(得分:0)

getPreferred/Minimum/MaximumSize
$('#AddButton').click( function()
{
    var input = $('#TextBox');
    input.val(parseInt(input.val()) + 1);
    if(input.val()>=10){
    alert("this is last limit");
    input.val(0) ;
    }
});

您也可以这样子

答案 4 :(得分:0)

尝试一下。如果您不希望停在10点,请改用注释掉的语句。

$(document).ready(function(){
	var i = 1;
	$(document).on('click', 'button', function(){
		$(this).text(i<10?++i:i);
		//$(this).text(++i);
	});
});