JavaScript确认框不起作用。

3

我在使用javascript的confirm方法时遇到了一个奇怪的问题,每当我调用它时,它会抛出错误信息:"未捕获的类型错误:对象[object Object]的属性 'confirm' 不是一个函数"

 var confirmVal = window.confirm("Please confirm?");
          if( confirmVal == true ){  

              return true;
          }

我的JS文件就像下面这样嵌入在HTML中:
<link rel="stylesheet" href="css/vendor/bootstrap.min.css">    
<link rel="stylesheet" href="css/vendor/jquery-ui.css">


<script src="js/vendor/jquery-2.1.3.min.js"></script>
<script src="js/vendor/jquery-ui.js"></script> 


<link rel="stylesheet" href="css/vendor/jquery.mobile-1.4.5.min.css">
<link rel="stylesheet" href="css/vendor/star-rating.css">
<link rel="stylesheet" href="css/vendor/toastr.min.css">
<script type="text/javascript" src="cordova.js"></script> 
<script src="js/vendor/bootstrap.js"></script>
<script src="js/vendor/jquery.mobile-1.4.5.min.js"></script>
<script src="js/vendor/star-rating.min.js"></script>
<script type="text/javascript" src="js/vendor/toastr.min.js"></script>

奇怪的是,在我的其他HTML文件中它可以正常工作。请帮助我,我在这里做错了什么...

你是在 document.ready 中调用函数还是在自定义函数中调用的? - Happy Coding
仅在自定义函数中使用。我保证文档已准备就绪。 - Mallikarjun Hampannavar
你尝试过不使用 window. 吗? - YakovL
是的,我已经尝试过不使用窗口,但仍然出现相同的错误。 - Mallikarjun Hampannavar
你在用哪个浏览器?如果不是在正常工作的浏览器中,则尝试不同的浏览器,这可能是因为你的浏览器有问题。 - Jorawar Singh
4个回答

2
代码是正确的,除了 return 语句必须在一个函数中。
function confirmation(){
  var confirmVal = window.confirm("Please confirm?");
      if( confirmVal == true ){  
          return true;
      }
  }

1
代码是正确的,它在我的其他HTML页面中可以工作。但在这个页面中,JS文件出了些问题。 - Mallikarjun Hampannavar

0
navigator.notification.confirm(
    'ARE YOU SURE!', // message
     myCallBck,            // callback to invoke with index of button pressed
    'CONFIRM',           // title
    ['CONFIRM','CANCEL']     // buttonLabels
);

function myCallBck(index){
   console.log(index);
}

1
尝试将所有JS包含项全部删除,看看能否解决问题,然后逐一添加每个JS文件。 - Iceman
好的,但我怎么检查这个“在那些js文件中的覆盖窗口!!”? - Mallikarjun Hampannavar
注释掉每个 JS 包含并检查它是否有效。抱歉,没有其他简单的方法。 - Iceman
可能你是在函数内部调用了confirm,这种情况下返回值是有效的,但是你的代码片段没有显示上面的函数。这就是为什么每个人都将其指出为语法错误的原因。 - Iceman
我只在deviceready函数中调用它,我已经尝试删除所有js文件,但仍然存在同样的问题 :-( - Mallikarjun Hampannavar
显示剩余4条评论

0

你正在使用return语句,但是谁来处理这个语句呢?如果你想使用return语句,你需要将你的代码封装到函数中。

var confirmed = confirm("yes or cancel");

function confirmMe (){
     if (confirmed){
          return true;
     }
 }

你也可以这样做

function confirmMe (){
     return confirmed;
}

//将返回true或false

您可以检查是否覆盖了window对象。打开控制台并输入window,您可以看到window是否具有confirm方法。


-2

移除“return true”,因为它必须被包装在一个函数中 了解更多请点击这里

var confirmVal = window.confirm("Please confirm?");
          if( confirmVal == true ){  
            alert("alright");             
          }


确认方法出现错误。无论如何,我已经尝试删除“return true”语句,但问题仍然存在。 - Mallikarjun Hampannavar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接