2017-02-20 71 views
0

我有一个jquery函数,我已经声明了一个变量,并将其设置为默认的false.and然后在If条件中,我为该变量赋予了真值。但是我总是得到false.why是这样吗?当使用警告我得到“真正的”战利品如果条件是“假”如何比较Javascript中的变量值?

这里是我的代码:

var abc = false 
$('#dataTable tr td').find("input[name='" + 'lstDetlIssue[' + i + '].Product' + "']").change(function() { 
abc = true; 
alert(abc); 
}); 

if (MstCopyParseData[rowIndex].ProductID == MstCopyParseData[parseInt(i)].ProductID && (i != rowIndex && (MstCopyParseData[i].Product != "" && abc == true))) { 
+0

如果可能的话给我们一个小提琴https://jsfiddle.net/ – Sarath

+0

你可以给一个例子链接来检查实际发生的事情。所以我们可以帮忙? –

回答

1
$('#dataTable tr td').find("input[name='" + 'lstDetlIssue[' + i + '].Product' + "']").change(function() { 
    abc = true; 
    alert(abc); // true here 
    }); 

false here 

ABC是这个里面真实的,但它的这种功能的假外因为你默认设置为false ...这就是为什么你得到错误....如果你想真正的abc那么你应该把你的“如果”条件内的上述功能

0

这可能是一个问题作用域。它很难从你给的代码告诉,但尝试做这样的事情:

// create a variable that refers to the scope you want. 
const that = this; 
let abc = false; 

$('#dataTable tr td').find("input[name='" + 'lstDetlIssue[' + i + '].Product' + "']").change(function() { 
    // then change it like so 
    that.abc = true; 
    alert(that.abc); 
}); 

This youtube video解释JavaScript的范围相当不错。

+0

我无法打开链接 –

+0

这里是链接:https://youtu.be/SBwoFkRjZvE –

+0

也应该重构你的代码。我会建议创建一个函数来将你的'if'语句放入'change'回调中,并调用该函数。您的函数在时间码运行时的值将为false。 –

0

当您更改输入值时,将“abc”设置为true,但当您仅设置“更改”功能时运行“if”条件,那时,您的“abc”仅设为false。

,如果你希望你的“ABC”是真实的,移动的“如果”条件到.change()

var abc = false 
$('#dataTable tr td').find("input[name='" + 'lstDetlIssue[' + i + '].Product' + "']").change(function() { 
    abc = true; 
    alert(abc); 
    if (MstCopyParseData[rowIndex].ProductID == MstCopyParseData[parseInt(i)].ProductID && (i != rowIndex && (MstCopyParseData[i].Product != "" && abc == true))){ 
    //TODO 
    } 
}); 
+0

如果我移动我的条件里面chage事件它不会工作。 –

+0

你有“MstCopyParseData [rowIndex] .ProductID == MstCopyParseData [parseInt(i)]。ProductID &&(i!= rowIndex &&(MstCopyParseData [i] .Product!=”“”之前abc == true,如果这条件是条件是错误的,并不意味着“abc”不是真的,也许这三个表达式中的一个是错误的。你可以写if(abc == true)来判断每个表达式以找出哪个表达式是错误的。 – Hejie

+0

如果(a && b)为真,则表示a是真,b是真。 – Hejie