为什么布尔值在退出函数后会发生变化
Why does the value of a boolean change after stepping out of a function?
单击class属性包含"disabled-selected"的li元素后,disabled会得到值"true",但在退出函数后,会调用最后一个if语句。
var disabled = false;
$("li").click(function () {
if ($(this).attr("class") == "disabled selected") {
disabled = true;
}
});
if (disabled) {
alert("disabled is true");
}
if (!disabled) {
alert("disabled is false");
}
您应该在单击处理程序中移动两个if
语句。
var disabled = false;
$("li").click(function () {
if ($(this).attr("class") == "disabled selected") {
disabled = true;
}
if (disabled) {
alert("disabled is true");
}
else {
alert("disabled is false");
}
});
最后两个if测试是在点击事件处理程序之前运行的,因此disabled
的值当时还没有更改。
只有单击"li"才会调用回调。但是,接下来的两个"if"语句会立即执行。您需要将它们放置在回调中。
var disabled = false;
$("li").click(function () {
if ($(this).attr("class") == "disabled selected") {
disabled = true;
}
if (disabled) {
alert("disabled is true");
}
if (!disabled) {
alert("disabled is false");
}
});
单击li
元素时执行该函数。在最初评估脚本时,尚未触发单击事件。
问题有两个方面。
首先,正如几张海报所指出的,您需要将这些if
测试放在点击处理程序中。目前,它们在点击处理程序的作用域之外执行,我怀疑这不是您希望它们执行的时候。
其次,如果类字符串是'disabled selected'
,那么if ($(this).attr("class") == "disabled selected") {
只会得到一个"truthy"值。如果类字符串是'selected disabled'
(或'otherClass disabled selected'
或'disabled selected draggable'
等),则比较结果将返回一个false
值。
尝试:
$("li").click(function () {
var i = $(this); //Multiple variables used for better step-line debugging.
var hasDisabled = i.hasClass('disabled');
var hasSelected = i.hasClass('selected');
var disabled = false;
if (hasDisabled && hasSelected) {
disabled = true;
}
if (disabled) {
alert("disabled is true");
}
if (!disabled) {
alert("disabled is false");
}
});
相关文章:
- 调用$.each()函数时上下文发生变化
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- 副作用/传递到函数中的全局变容变化
- 在异步函数调用过程中,当对象的属性值发生变化时,JavaScript中的对象属性值会发生什么变化
- jquery函数不反映类的变化使我的另一个事件
- jQuery UI - 多个动态生成的滑块和函数,每个滑块和函数都会发生变化
- 为什么这个变量在函数之间传递时会发生变化
- JAVASCRIPT 变量在函数中没有变化
- 当花式盒子包装高度发生变化时,如何调用花式框调整大小函数
- 如何使jquery函数与动态变化的元素一起工作
- 为什么当“var”在函数范围内时,它的值不发生变化
- 全局变量不't随jquery函数变化
- 如何在函数中有一个动态变量,而不将其链接到变化的变量
- 函数内部的函数;变量在不知不觉中变化,为什么?(Javascript)
- IFRAME中的SRC属性随onload函数而变化
- 为什么布尔值在退出函数后会发生变化
- 变量用作函数参数后发生变化
- 当我的函数在javascript中运行时,我的随机数生成器不断变化
- 变量发生变化时调用函数
- 调用Javascript函数f:selectitems的变化