var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}Run Code Online (Sandbox Code Playgroud)
它输出这个:
我的价值:3
我的价值:3
我的价值:3
而我希望它输出:
我的价值:0
我的价值:1
我的价值:2
使用事件侦听器导致运行函数的延迟时,会出现同样的问题:
var buttons = document.getElementsByTagName("button");
// let's create 3 …Run Code Online (Sandbox Code Playgroud)我有一个非常微不足道的问题.对于带有setTimeout的简单循环,如下所示:
for (var count = 0; count < 3; count++) {
setTimeout(function() {
alert("Count = " + count);
}, 1000 * count);
}
Run Code Online (Sandbox Code Playgroud)
console提供如下输出:
Count = 3
Count = 3
Count = 3
Run Code Online (Sandbox Code Playgroud)
不知道为什么输出像这样.有人可以解释一下吗?
我想在内联 jQuery 日期选择器上以编程方式设置多个日期。我有一个日期数组,我想循环遍历它们,并且在每次迭代时,应在日期选择器中选择一个日期。
结果应该是在内联 jQuery 日期选择器上选择的多个日期。
这就是我正在尝试的,但我还没有取得太大成功。
for(var j=0; j<dateArr.length; j++){
$("#inlineDp").datepicker.('setDate',dateArr.pop());
}
Run Code Online (Sandbox Code Playgroud) 问题
当使用AJAX查询远程API时,由于请求的异步特性,它在完成时都会返回。问题是,当我不得不使用不同的条件对相同的API进行迭代调用时,我不知道会返回哪个响应。
问题:是否可以从中传递变量
示例代码:(简体)
n=5;
for(i=0; i < n; i++) {
$.ajax({
url: someURL,
method: post,
// I don't want to have to use async: false, that's bad
// async: false,
data: JSON.stringify(someData),
beforeSend: function(){
console.log("Starting request #"+i)
},
error: function(err, code, text) {
alert("Something went wrong: \n\n" + code + ": " + text);
},
success: function(response) {
console.log("Response for request #"+i)
console.log(response)
}
})
}
Run Code Online (Sandbox Code Playgroud)
问题在于最终的成功功能:我应该看到的是:
Starting request #0
Starting request #1
Starting request #2
Starting request #3 …Run Code Online (Sandbox Code Playgroud) 我想在1 second每次循环时暂停,在其他情况下通常很容易做类似的暂停,但在使用循环时,似乎变得更难:
for (var i=0 ; i < 10 ; i++) {
document.write (i + "<br>");
// I want to wait 1 second here
}
Run Code Online (Sandbox Code Playgroud)
这是我成千上万次尝试失败的一个例子:
function writeMsg (index) {
document.write (index + "<br>");
}
for (var i=0 ; i < 10 ; i++) {
setTimeout (writeMsg(i), 1000);
}
Run Code Online (Sandbox Code Playgroud)
有关如何使其工作的任何想法?
我正在尝试编写一些JS复制jQuery的fadeIn和fadeOut函数.这是我到目前为止的代码:
function fadeIn(elem, d, callback)
{
var duration = d || 1000;
var steps = Math.floor(duration / 50);
setOpacity(elem,0);
elem.style.display = '';
for (var i = 1; i <= steps; i++)
{
console.log(i/steps + ', ' + (i/steps) * duration);
setTimeout('setOpacity("elem", '+(i / steps)+' )', (i/steps) * duration);
}
if (callback)
setTimeout(callback,d);
}
function setOpacity(elem, level)
{
console.log(elem);
return;
elem.style.opacity = level;
elem.style.MozOpacity = level;
elem.style.KhtmlOpacity = level;
elem.style.filter = "alpha(opacity=" + (level * 100) + ");";
}
Run Code Online (Sandbox Code Playgroud)
我遇到第一个setTimeout调用的麻烦 - …
有三个按钮.当我点击其中任何一个时 - 我想看到点击按钮的数量<span>.
<button>1st button</button>
<button>2nd button</button>
<button>3rd button</button>
<span></span>
Run Code Online (Sandbox Code Playgroud)
首先,我决定使用for循环,但我知道,它只保留最后一个值.
for ( var i = 0; i< 3; i++ ) {
$('button:eq(' + i + ')').click(function() {
$('span').append(i + 'button was clicked');
});
}
Run Code Online (Sandbox Code Playgroud)
也许,$.each()功能会对我有帮助吗?
javascript ×6
jquery ×3
loops ×2
ajax ×1
closures ×1
datepicker ×1
delay ×1
object ×1
settimeout ×1
sleep ×1