我试图让页面在例如之后转到起始页.10秒不活动(用户不点击任何地方).我在其余部分使用jQuery,但我的测试函数中的set/clear是纯javascript.
在我的沮丧中,我最终得到了类似这个功能的东西,我希望我可以在页面上的任何点击时调用.计时器启动正常,但点击时不会重置.如果在前10秒内调用该函数5次,则会发出5次警报...没有clearTimeout ...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
Run Code Online (Sandbox Code Playgroud)
任何人都有一些代码可以解决问题吗? - 在任何单击停止时,重置并启动计时器. - 当计时器击中时,例如.10秒做某事.
我想在jquery中延迟一个悬停事件.当用户将鼠标悬停在链接或标签上时,我正在读取文件.如果用户只是在屏幕上移动鼠标,我不希望立即发生此事件.有没有办法推迟事件的发射?
谢谢.
示例代码:
$(function() {
$('#container a').hover(function() {
$('<div id="fileinfo" />').load('ReadTextFileX.aspx',
{filename:'file.txt'},
function() {
$(this).appendTo('#info');
}
);
},
function() { $('#info').remove(); }
});
});
Run Code Online (Sandbox Code Playgroud)
更新: (1/14/09) 添加HoverIntent插件后,上面的代码更改为以下代码来实现它.实现起来非常简单.
$(function() {
hiConfig = {
sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
interval: 200, // number = milliseconds for onMouseOver polling interval
timeout: 200, // number = milliseconds delay before onMouseOut
over: function() {
$('<div id="fileinfo" />').load('ReadTextFileX.aspx', {filename:'file.txt'},
function() {
$(this).appendTo('#info');
}
);
}, // function = onMouseOver …Run Code Online (Sandbox Code Playgroud) 我在React仍然相当新,但我一直在慢慢地磨,我遇到了一些我坚持不懈的事情.
我正在尝试在React中构建一个"计时器"组件,说实话,我不知道我是否正确(或有效).在下面我的代码,我设置状态来返回一个对象{ currentCount: 10 },并已与玩弄componentDidMount,componentWillUnmount和render我只能得到状态,以"倒计时",从10到9.
两部分问题:我出错了什么?并且,是否有更有效的方法来使用setTimeout(而不是使用componentDidMount&componentWillUnmount)?
先感谢您.
import React from 'react';
var Clock = React.createClass({
getInitialState: function() {
return { currentCount: 10 };
},
componentDidMount: function() {
this.countdown = setInterval(this.timer, 1000);
},
componentWillUnmount: function() {
clearInterval(this.countdown);
},
timer: function() {
this.setState({ currentCount: 10 });
},
render: function() {
var displayCount = this.state.currentCount--;
return (
<section>
{displayCount}
</section>
);
}
});
module.exports = Clock;
Run Code Online (Sandbox Code Playgroud) 我正在写一些与我不拥有的库代码交互的Javascript,并且不能(合理地)改变.它创建了Javascript超时,用于在一系列限时问题中显示下一个问题.这不是真正的代码,因为它超出了所有希望.这是图书馆正在做的事情:
....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
Run Code Online (Sandbox Code Playgroud)
我想questionTime * 1000通过询问创建的计时器在屏幕上放置一个进度条setTimeout.唯一的问题是,似乎没有办法做到这一点.有没有getTimeout我失踪的功能?我能找到的关于Javascript超时的唯一信息仅与创建通过setTimeout( function, time)和删除通过有关clearTimeout( id ).
我正在寻找一个函数,它返回超时触发前剩余的时间,或者调用超时后经过的时间.我的进度条形码如下所示:
var timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var $bar = $('.control .bar');
while ( timeleft > 1 ) {
$bar.width(timeleft / test.defaultQuestionTime * 1000);
}
Run Code Online (Sandbox Code Playgroud)
tl; dr: …
所以我正在制作一个音乐程序,需要多个javascript元素与另一个同步.我一直在使用setInterval,它最初工作得非常好但是随着时间的推移,元素逐渐变得不同步,而音乐程序则很糟糕.
我在网上看到setTimeout更准确,你可以用某种方式设置setTimeout循环但是我还没有找到一个通用版本来说明这是如何实现的.有人可以向我展示一个使用setTimeout无限循环的基本示例.
谢谢.或者,如果有办法通过setInterval或其他功能实现更多同步结果,请告诉我.
编辑:
基本上我有一些像这样的功能:
//drums
setInterval(function {
//code for the drums playing goes here
},8000);
//chords
setInterval(function {
//code for the chords playing goes here
},1000);
//bass
setInterval(function {
//code for the bass playing goes here
},500);
Run Code Online (Sandbox Code Playgroud)
它最初工作得非常好,但是在大约一分钟的过程中,声音明显不同步,因为我已经阅读了setInterval,我读过setTimeout可以更加一致地准确.
这不是一个现实世界的问题,我只是想了解如何创造承诺.
我需要了解如何为一个不返回任何内容的函数做出承诺,比如setTimeout.
假设我有:
function async(callback){
setTimeout(function(){
callback();
}, 5000);
}
async(function(){
console.log('async called back');
});
Run Code Online (Sandbox Code Playgroud)
如何创建一个async可以在setTimeout准备好后返回的承诺callback()?
我想包装它会带我到某个地方:
function setTimeoutReturnPromise(){
function promise(){}
promise.prototype.then = function() {
console.log('timed out');
};
setTimeout(function(){
return ???
},2000);
return promise;
}
Run Code Online (Sandbox Code Playgroud)
但我想不到这一点.
我正在抓取一个jQuery对象数组,然后通过.each()修改数组中的每个单独的jquery.
在这种情况下,我更新了类名以触发-webkit-transition-property以利用css转换.
我想在每次css转换开始之前暂停一下.我正在使用以下内容,但每次更新之间没有延迟.相反,它们似乎都在立即更新.
function positionCards() {
$cards = $('#gameboard .card');
$cards.each(function() {
setTimeout( function(){ addPositioningClass($(this)); }, 500 )
});
}
function addPositioningClasses($card){
$card
.addClass('position')
}
Run Code Online (Sandbox Code Playgroud)
我希望setTimeout可以解决这个问题,但它似乎没有起作用.有没有办法在每个对象的每个CLASS名称更新之前完成暂停?
这里简单的问题是我似乎无法找到答案:一旦setTimeout确定了,有没有办法看看它是否仍然,好吧,设置?
if (!Timer)
{
Timer = setTimeout(DoThis,60000);
}
Run Code Online (Sandbox Code Playgroud)
从我所知,当你clearTimeout,变量保持在它的最后一个值.一个console.log我只是看着显示Timer为"12",不管是否设置了超时或清除.我是否也必须将变量置零,或者使用其他变量作为布尔说法,是的,我已设置此计时器?当然有一种方法可以检查超时是否仍在运行......对吗?我不需要知道剩下多长时间,只是它还在运行.
我正在尝试为React Native内置的iOS应用加载启动画面.我试图通过类状态,然后一个setTimeout函数来完成这个,如下所示:
class CowtanApp extends Component {
constructor(props){
super(props);
this.state = {
timePassed: false
};
}
render() {
setTimeout(function(){this.setState({timePassed: true})}, 1000);
if (!this.state.timePassed){
return <LoadingPage/>;
}else{
return (
<NavigatorIOS
style = {styles.container}
initialRoute = {{
component: LoginPage,
title: 'Sign In',
}}/>
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
加载页面工作一秒钟,然后我想当setTimeout尝试将状态更改为true时,我的程序崩溃:'undefined不是对象(评估this.setState)'.我已经花了几个小时,有关如何修复的想法?
我正在尝试使用setTimeout编写一个简单的代码,并且setTimeout不会等待它所设想的时间并且代码立即执行.我究竟做错了什么?
setTimeout(testfunction(), 2000);
Run Code Online (Sandbox Code Playgroud) settimeout ×10
javascript ×8
jquery ×3
each ×1
events ×1
ios ×1
mouseevent ×1
promise ×1
react-native ×1
reactjs ×1
setinterval ×1
state ×1
timeout ×1
timer ×1
timing ×1