Javascript在两个不同版本中的行为不同
让我先显示代码,然后尝试解释问题Javascript在两个不同版本中的行为不同,javascript,jquery,Javascript,Jquery,让我先显示代码,然后尝试解释问题 function toggleButton(filter, button) { var buttonOn = false; if ( button.value === "ON" ) { buttonOn = true; } if ( buttonOn ) { button.value = "OFF"; button.className = "btn_tgl btn_tgl_off";
function toggleButton(filter, button) {
var buttonOn = false;
if ( button.value === "ON" ) {
buttonOn = true;
}
if ( buttonOn ) {
button.value = "OFF";
button.className = "btn_tgl btn_tgl_off";
}
else {
button.value = "ON";
button.className = "btn_tgl btn_tgl_on";
}
checkItem();
}
function checkItem(alreadyGotStuff) {
if(!alreadyGotStuff){
do this
}
else{
do that
}
}
所以问题是这个。在使用此脚本的程序的主干和生产版本中,当toggleButton运行并checkItem()时调用code>,alreadygottuff
是未定义的
。这是正确的,因为我需要它是未定义的,所以第一个if
语句将成功,它将执行此操作。脚本中还有其他函数将调用checkItem(true)
,因此该函数将执行该操作
。在我的开发分支中,当调用是checkItem()时代码>,该值始终为真。无论我使用什么浏览器,脚本都完全相同。为什么它在一个版本中传递未定义的
,而在另一个版本中保持true
谢谢checkItem()
将始终传递未定义的
作为第一个参数。和!未定义的
将始终为真
。因此,还有一些事情正在发生。您已经在问题的标记中指定了jQuery,但您的代码不包含任何jQuery。事实上,这种切换是jQuery非常容易实现的(使用它的.toggle()
函数),因此如果您使用jQuery,应该对此进行研究。请参阅相关的jquery手册页面:我将其标记在jquery下,因为我仍在学习很多这方面的知识,而.js中包含jquery的内容。我不知道这是属于两者还是javascript。抱歉搞混了,问题解决了。抱歉,这个问题与脚本完全无关。再次道歉。