Jquery绑定在javascript递归循环中不工作
Jquery bind not working while within a javascript recursive loop
我正在写一段代码,它将屏幕上的一些灯随机地从红色变为绿色,并等待用户按下对应于灯亮的键。
当我运行这段代码时,你可以按a,d,j或l键,然后会弹出一个警告。然而,只要我点击开始按钮没有键被识别。当循环结束时,绑定似乎仍然被禁用。我曾试着把它搬到其他地方,但我没有任何乐趣。非常感谢您的帮助。
$( function() {
$('#start').bind('click', function() { main(); });
$(document).bind('keypress', function(e) { keyPress(e); } );
} );
function getRand(val) {
return Math.floor(Math.random()*val)+1;
}
function main() {
preD = new Date;
preDs = preD.getTime();
randTime=Math.floor(Math.random()*1001)+1500;
playSound();
flash();
}
function flash() {
zone = getZone();
setTimeout(function() {
$('#r'+zone).css("background-image", "url(images/rea_grn.jpg)");
setTimeout(function() {
$('#r'+zone).css("background-image", "url(images/rea_red.jpg)");
if(cond[1] < 8) {
main();
}
} , 200);
} , randTime);
}
function getZone() {
if(condition==1) {
zone = getRand(2);
if( test[1][zone] < 8 ) {
test[1][zone] += 1;
cond[1] += 1;
return zone;
} else {
getZone();
}
}
}
function keyPress(e) {
var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit.
var unicode=evtobj.charCode? evtobj.charCode : evtobj.keyCode
var actualkey=String.fromCharCode(unicode)
if (actualkey=="a" || actualkey=="d" || actualkey=="j" || actualkey=="l" ) {
dd = new Date;
reat = dd.getTime();
alert(1);
//keypressed[condition][zone]['k']=actualkey;
//keypressed[condition][zone]['t']=(reat-preDs);
}
}
可能发生这种情况的原因是,当您动态生成代码或更改任何现有代码时,绑定需要再次执行,因为要绑定的函数只运行一次,并且只针对已经创建的成员。因此,当您创建动态代码时,您被迫运行绑定函数来识别新元素。
这种方式不是很推荐,相反,你可以绑定一个像'div'之类的容器,在这个里面验证是哪个元素在调用你。这是有效的,因为你的容器只创建一次,并且绑定是正确分配的,如果容器的内容发生变化,绑定总是有效的。
对
使用jquery声音插件是答案。
修复:plugins.jquery.com/project/sound_plugin
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- AngularJS循环不工作
- For循环在Javascript函数中无法正常工作
- for循环在node.js中的工作方式
- 循环内部的递归函数未按预期工作
- mongoose.js Model.remove在循环中只能工作一次
- JavaScript while循环没有'不能在有条件的情况下工作
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 让循环在我的脚本中工作
- 循环不'不能在“onreadystatechange”中工作
- 如何使此循环工作?它's返回未定义的语言js
- 为什么javascript setTimeout()不能在循环中工作
- jAlert在循环中无法正常工作
- css转换在for循环javascript中无法正常工作
- for循环,if else不工作Javascript
- CSS-转换在JavaScript for循环中不能正常工作
- 从数组中随机选择,但在for循环中选择是不可能的;没有按预期工作
- JavaScript:For循环无法正常工作
- For循环未按预期工作(使用jQuery)
- 为什么我的Javascript Chrome扩展代码不工作?(循环检查按钮)