Javascript 为什么我的函数返回“;未定义”;而不是布尔值 $(文档).ready(函数(){ $(“表格”)。提交(功能(e){ 如果(!checkStockOfProduct()) { e、 预防默认值(); 返回false; } 返回真值 }); });
storeinputoutput.js文件:Javascript 为什么我的函数返回“;未定义”;而不是布尔值 $(文档).ready(函数(){ $(“表格”)。提交(功能(e){ 如果(!checkStockOfProduct()) { e、 预防默认值(); 返回false; } 返回真值 }); });,javascript,return-value,Javascript,Return Value,storeinputoutput.js文件: 函数checkStockOfProduct(){ var allowSubmitForm=true; $(“table#StoreItemdatatable>tbody>tr”)。每个(函数(){ . . . var storeId=$('#storeId').val(); var股票=空; var URL='/aaa/bbb' $.ajax({ async:false, url:url, contentType:'application/x-www
函数checkStockOfProduct(){
var allowSubmitForm=true;
$(“table#StoreItemdatatable>tbody>tr”)。每个(函数(){
.
.
.
var storeId=$('#storeId').val();
var股票=空;
var URL='/aaa/bbb'
$.ajax({
async:false,
url:url,
contentType:'application/x-www-form-urlencoded',
数据类型:“json”,
数据:{
productNServiceID:productNServiceID,
storeID:storeID
},
键入:“POST”,
成功:功能(数据){
股票=数据。股票;
}
,错误:函数(jqXHR,异常){
}
});
如果(…){
allowSubmitForm=false;
}
返回allowSubmitForm;
});
}
在表单提交中,我调用了函数,如果函数返回false,我就不会执行提交操作。
但是xx变量的值总是未定义的
请告知
使用警报进行检查。最后一行中函数“checkStockOfProduct”中的变量“allowSubmitForm”有值,而不是“未定义”
但是在Submit中它是未定义的
function checkStockOfProduct() {
var allowSubmitForm = true;
if (...) {
allowSubmitForm = false;
}
return allowSubmitForm;
};
并根据函数返回值调整submit()事件处理程序:
$(document).ready(function () {
$("form").submit(function (e) {
if (checkStockOfProduct()) {
//valid
return;
}
//invalid
e.preventDefault();
});
});
CheckSumOfProduct
函数是同步的
让我们重构代码,以执行与您尝试执行的相同的操作,但看起来像这样==>让我知道这是否可行…我在运输途中,在移动atm上false和'false'不一样。如果要返回布尔值,请不要在值周围加引号。这是一个字符串。@Barmar@ThisIsNoZaku他说它返回
未定义的。如果原因是字符串'false'和'true',他将收到一个字符串,并有另一种错误。我们需要更多的代码@Miss,这样我们才能理解它为什么不工作。我担心产品的checkStockOfProduct
功能可能过于简化了。它有一个流氓})我猜其中可能是一个异步调用。无论有无引号,您共享的代码都不应返回未定义的
。如果您想获得问题的帮助,您必须共享实际代码。当您共享了一个完全正常工作的代码片段时,我们不能一直猜测这个问题。为什么要麻烦使用if(!Boolean(xx))
而不是if(!xx)
?与更传统的布尔对象相比,使用布尔对象类型有什么好处?@JMoravitz您可以使用传统的!但是Boolean()函数的优点是,无论变量类型如何,它总是返回true或false。例如,如果xx为“未定义”或“null”,则“if(xx==false)”的比较将返回false,但“if(Boolean(xx)==false)”将按预期返回true。通过完全删除不必要的==false
条件的一部分,您的(!xx)
将为所有false值返回true,包括false、未定义、null、,和NaN等,不管(xx==false)
是否返回true。此外,由于我们控制了xx
,我们应该能够保证在我们检查它时它可能具有的值。@Miss You在checkStockOfProduct()中的代码最后一行有一个额外的)
。这很有帮助,但并没有回答OP的问题,即“为什么它返回未定义的?”。这些指针更适合作为注释(其他用户已经做了)。
const checkSumOfProduct = (whatever...) ? false : true
$(document).ready(function() {
$("form").submit(function(e) {
if(!CheckStockOfProduct()){
e.preventDefault()
return false
}
return true
});
});