【问题标题】:confirmation dialog isn't showing确认对话框未显示
【发布时间】:2021-06-28 06:56:29
【问题描述】:
document.querySelector('#select').addEventListener("change", function() {
    var confirm = confirm("Do you want to update data?");
    if (confirm == true) {
          if (this.value == "1") {
            $.ajax({
                        url: "update.php",
                        type: "POST",
                        data: {
                            id: <?php echo $row['serial']?>,
                            type: "pending"         
                        },
                        cache: false,
                        success: function(dataResult){
                            var dataResult = JSON.parse(dataResult);
                            if(dataResult.statusCode==200){
                                alert("Successfully updated");

                                location.replace("../deposit/");
                            }
                            else if(dataResult.statusCode==201){
                                alert("Something went wrong");

                            }else{
                                alert("Everything went wrong");
                            }
                            
                        }
            });
          }else if(this.value == "2"){
            $.ajax({
                        url: "update.php",
                        type: "POST",
                        data: {
                            id: <?php echo $row['serial']?>,
                            type: "succeed"         
                        },
                        cache: false,
                        success: function(dataResult){
                            var dataResult = JSON.parse(dataResult);
                            if(dataResult.statusCode==200){
                                alert("Successfully updated");

                                location.replace("../deposit/");
                            }
                            else if(dataResult.statusCode==201){
                                alert("Something went wrong");

                            }else{
                                alert("Everything went wrong");
                            }
                            
                        }
            });
          }else if(this.value=="3"){
            $.ajax({
                        url: "update.php",
                        type: "POST",
                        data: {
                            id: <?php echo $row['serial']?>,
                            type: "canceled"            
                        },
                        cache: false,
                        success: function(dataResult){
                            var dataResult = JSON.parse(dataResult);
                            if(dataResult.statusCode==200){
                                alert("Successfully updated");

                                location.replace("../deposit/");
                            }
                            else if(dataResult.statusCode==201){
                                alert("Something went wrong");

                            }else{
                                alert("Everything went wrong");
                            }
                            
                        }
            });
          }else{
            console.log("Update canceled");
          }


}
});

当用户更改option 时,我添加了一个确认对话框。当我运行代码并更改 option 时,我没有收到任何确认对话框,但是,当我在没有确认对话框的情况下工作时,一切正常。为什么会这样?我在控制台出现错误Uncaught TypeError: confirm is not a function at HTMLSelectElement.&lt;anonymous&gt;I was looking at w3schools courses but, i am unable to understand anything

【问题讨论】:

  • 不要使用confirm作为变量名。
  • @connexo 工作... :)

标签: javascript confirm


【解决方案1】:

您可以使用window.confirm,因为它是一个暴露给 Window 的全局函数。 https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm


您也可以将您的代码更改为此(您不需要var confirm。这也是问题所在,因为您使用了两次confirm,但用途不同。

    if (confirm("Do you want to update data?")) {

如果您确实需要该变量,请使用布尔值的标准命名约定,即在变量名称前添加“is”、“has”、“can”或“should”:

    var hasConfirmed = confirm("Do you want to update data?");
    if (hasConfirmed == true) {

【讨论】:

    【解决方案2】:

    您应该避免使用 HTML 和 Window 对象和属性的名称:

    https://www.w3schools.com/js/js_reserved.asp

    不要使用确认使用 ConfirmDialog 什么的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      相关资源
      最近更新 更多