我有一个按钮可以在点击时删除横幅。我想添加一个对话框,如果用户意外点击了该按钮,将要求确认。我添加了这段代码(我已经多次使用它并且每次都使用它):
$('.rem_cover_btn').click(function(){
confirm = confirm("Are you sure you want to remove your banner?");
if(confirm){
window.location='../modules/user/removeBanner.php';
}
});
当我点击按钮时,会出现对话框,如果我点击“取消”并重复该操作,则不会显示对话框,我只是在Chrome开发控制台中收到此消息:
Uncaught TypeError:boolean不是函数'
所以:'删除横幅'按钮点击>取消操作>再次点击按钮>显示错误
我不知道为什么它第一次起作用,每次之后都会出现错误。
答案 0 :(得分:2)
我认为您应该将代码更改为:
$('.rem_cover_btn').click(function(){
var confirmResult;
confirmResult = confirm("Are you sure you want to remove your banner?");
if(confirmResult){
window.location='../modules/user/removeBanner.php';
}
});
<强>说明:强>
你不小心&#34;重写&#34; confirm
功能。没有var
的变量声明在全局范围内变量(或重写某些东西)。
在你的情况下:
confirm
函数并重写变量&#34; hold&#34;这个功能confirm
包含布尔值答案 1 :(得分:2)
这行代码覆盖原生confirm
函数
confirm = confirm("Are you sure you want to remove your banner?");
它用confirm
的结果覆盖它,这是一个布尔值。下次执行此代码时,confirm
是一个布尔值,当使用()
时会产生错误,因为它期望存在一个函数。
考虑避免使用与实际原生api名称相关的变量名称。也许removeBanner
,因为它是一个更具描述性的名称。此外,如果没有使用var
为变量名添加前缀,它将使用全局范围。这也是一个明显的问题,使用var
将在未来避免重大问题。
$('.rem_cover_btn').click(function(){
var removeBanner = confirm("Are you sure you want to remove your banner?");
if(removeBanner){
window.location='../modules/user/removeBanner.php';
}
});
答案 2 :(得分:0)
你必须声明一个var:
$('.rem_cover_btn').click(function(){
var confirm = confirm("Are you sure you want to remove your banner?");
if(confirm){
window.location='../modules/user/removeBanner.php';
}
});