Javascript 在jquery中更改变量时遇到问题
嘿,在单击某个html元素时,我很难在javascript/jquery代码中重新分配变量,这有效吗Javascript 在jquery中更改变量时遇到问题,javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,嘿,在单击某个html元素时,我很难在javascript/jquery代码中重新分配变量,这有效吗 var secret = false; /* assigning boolean */ $('#facebook2').click(function() { /*reassigning "secret" to true on click*/ secret = true; $('#link-secret').attr('id', 'link-secret2');
var secret = false; /* assigning boolean */
$('#facebook2').click(function() { /*reassigning "secret" to true on click*/
secret = true;
$('#link-secret').attr('id', 'link-secret2');
});
if (secret == true) { /* should only work if "secret" is true */
$("#twitter2").click(function(){
$("body").css("background-color","yellow");
});
}
我已尝试将初始“secret”值移入和移出$(文档)。就绪标记无效。我是不是错过了一些很明显的东西
谢谢你的帮助
编辑:谢谢你的快速回答,有人能解释一下为什么我的这部分代码不起作用吗
$( "#link-secret" ).hover(function() {
$(".top-left-circle").addClass("circle-dupe");
$("#speech-bubble1, #speech-bubble2, #speech-bubblex, #speech-bubblex2, #speech-arrow" ).hide("250");
if (secret == false){
setTimeout(function() {
$( "#speech-bubblex, #speech-arrow" ).stop().show("slow");
}, 500);
} else {
setTimeout(function() {
$( "#speech-bubblex2, #speech-arrow" ).stop().show("slow");
}, 500);
}
setTimeout(function() {
$( "#speech-bubblex, speech-bubblex2, #speech-arrow" ).hide(2000);
}, 5000);
},
function() {
$(".top-left-circle").removeClass("circle-dupe")}
);
如果secret为false,则If/else语句的两部分都将执行,如果为true,则两部分都不会执行。问题在于,由于secret为false,因此没有为您的单击处理程序分配开头。相反,请指定处理程序,然后仅在secret为true时执行颜色更改:
var secret = false; /* assigning boolean */
$('#facebook2').click(function() { /*reassigning "secret" to true on click*/
secret = true;
$('#link-secret').attr('id', 'link-secret2');
});
$("#twitter2").click(function(){
if (secret == true)
$("body").css("background-color","yellow");
});
只有当
secret
为true时,代码才会分配单击处理程序,而页面加载中没有该处理程序。当secret
为true时,您可能需要更改背景色:
$("#twitter2").click(function(){
if(secret) { $("body").css("background-color","yellow"); }
});
赋值
secret=true代码>仅在调用click事件处理程序时发生。您的测试if(secret==true)
在处理程序注册后立即发生,而在click事件发生之前很久。您需要将该逻辑放入函数中,并从单击事件处理程序调用它,以便在单击事件发生后运行。Yep。问题是,条件是在文档准备就绪时进行一次评估,并确定单击处理程序的分配,而不是确定背景颜色的更改。如果您解释了错误所在以及更改修复的原因,这个答案会更好。@creditenson-alley-oop