gpt4 book ai didi

javascript - 确认消息的选择被忽略

转载 作者:行者123 更新时间:2023-11-30 17:42:07 24 4
gpt4 key购买 nike

js 创建确认消息。我构建了一个网络应用程序,用户可以在其中更改图形的 2 个边界(使用更新按钮)。当用户单击更新按钮时,会出现一条确认消息,要求用户确认此更改。

问题是,当我单击“确定”或“取消”时,这无关紧要,也不会更改标志,并且无论如何都会发生边界更改(因为标志的初始值为真)。来自console.log 的消息,我了解到该应用程序不会等待用户响应并继续执行其他代码行......我已尝试将所有代码放入我发送的 alertify 函数 (e) 中,但它仍然对我不起作用。这是我的代码:

Alarm.prototype.updateAlarm=function(_limits){
var n=null;
var str="";
var changed_flag=false;
//create confirm dialog:
var engLimitMsg_1=" Upper Limit:";
var engLimitMsg_2=" Lower Limit:";
var hebLimitMsg_1=" גבול עליון:";
var hebLimitMsg_2=" גבול תחתון:";
var user_confirm=true;
var confirmMSG="";
if(_limits.length>=2){
if(this.language_mode==HEB_MODE){
confirmMSG+=ENG_CONFIRM_MSG;
if(IsNumeric(parseInt(_limits[0]))){
confirmMSG+=engLimitMsg_1+_limits[0];
}
if(IsNumeric(parseInt(_limits[1]))){
confirmMSG+=engLimitMsg_2+_limits[1];

}
}
else{
confirmMSG+=ENG_CONFIRM_MSG;
if(IsNumeric(parseInt(_limits[0]))){
confirmMSG+=engLimitMsg_1+_limits[0];
}
if(IsNumeric(parseInt(_limits[1]))){
confirmMSG+=engLimitMsg_2+_limits[1];

}

}

alertify.confirm(confirmMSG, function (e) {
if (e) {
// user clicked "ok"
user_confirm=true;
console.log("user clicked ok");

} else {
// user clicked "cancel"
user_confirm=false;
console.log("user clicked cancel");

}
});
//user has confirm the change!
if(user_confirm){
for (var i=0;i<_limits.length;i++){
if(IsNumeric(parseInt(_limits[i]))){
n=this.msgs[i].indexOf(this.limits[i].toString());
this.limits[i]=_limits[i];
this.msgs[i]=this.msgs[i].slice(0,n)+this.limits[i];
changed_flag=true;
}
}
}
// clean past alerts in case of change limits.
if(changed_flag)
this.cleanPastAlerts();
if(DEBUG_MODE)
console.log("alarms update: upperLimit:"+this.limits[0]+" lowerLimit:"+this.limits[1]);

}
else{
console.log("Error occurred!, array length is less than 2");
}

};

注意:这是我有时会遇到的错误:

Uncaught TypeError: Cannot read property 'removeEventListener' of undefined 

最佳答案

浏览器中js的js确认停止了js的执行。当您使用“自定义确认”(js 库确认)时,“自定义确认”下方的代码会继续执行,这就是您在那里获取消息的原因,因为它会继续执行并且您在函数内部定义了变量,当 js 尝试使用它们时,它显示“ undefined variable ”。

您必须将所有代码插入到 alertfy 中以确保其正常工作(我没有检查下面的代码,因此请谨慎使用):

alertify.confirm(confirmMSG, function (e) {
if (e) {
// user clicked "ok"
user_confirm=true;
console.log("user clicked ok");

for (var i=0;i<_limits.length;i++){
if(IsNumeric(parseInt(_limits[i]))){
n=this.msgs[i].indexOf(this.limits[i].toString());
this.limits[i]=_limits[i];
this.msgs[i]=this.msgs[i].slice(0,n)+this.limits[i];
changed_flag=true;
}
// clean past alerts in case of change limits.
if(changed_flag) {
this.cleanPastAlerts();
}
}
} else {
// user clicked "cancel"
user_confirm=false;
console.log("user clicked cancel");

}
});
if(DEBUG_MODE)
console.log("alarms update: upperLimit:"+this.limits[0]+" lowerLimit:"+this.limits[1]);

关于javascript - 确认消息的选择被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20857113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com