我希望这个链接有一个JavaScript对话框,询问用户"Are you sure? Y/N".

<a href="delete.php?id=22">Link</a>

如果用户单击"是",则应加载链接,如果单击"否",则不会发生任何事情.

我知道如何在表单中做到这一点,使用onclick运行返回truefalse的函数.但是我如何使用<a>链接来实现这一点呢?

推荐答案

内联事件处理程序

以最简单的方式,您可以在内联onclick处理程序中使用confirm()函数.

<a href="delete.php?id=22" onclick="return confirm('Are you sure?')">Link</a>

高级事件处理

但通常情况下,您希望separate your HTML and Javascript,所以我建议您不要使用内联事件处理程序,而是在链接上放置一个类,并向其添加一个事件侦听器.

<a href="delete.php?id=22" class="confirmation">Link</a>
...
<script type="text/javascript">
    var elems = document.getElementsByClassName('confirmation');
    var confirmIt = function (e) {
        if (!confirm('Are you sure?')) e.preventDefault();
    };
    for (var i = 0, l = elems.length; i < l; i++) {
        elems[i].addEventListener('click', confirmIt, false);
    }
</script>

This example只能在现代浏览器中工作(对于较旧的IE,您可以使用attachEvent()returnValue并提供getElementsByClassName()的实现,或者使用类似jQuery的库来帮助解决跨浏览器问题).你可以阅读更多关于this advanced event handling method on MDN的知识.

jQuery

我不想被认为是jQuery的粉丝,但DOM操作和事件处理是浏览器差异最大的两个领域.只是为了好玩,下面是jQuery的样子:

<a href="delete.php?id=22" class="confirmation">Link</a>
...
<!-- Include jQuery - see http://jquery.com -->
<script type="text/javascript">
    $('.confirmation').on('click', function () {
        return confirm('Are you sure?');
    });
</script>

Javascript相关问答推荐

当没有固定间隔时,是否可以在d3.js中进行画笔捕捉?

即使设置了父级的最大高度,固定位置的分区内容也不会滚动?

在shiny 模块中实现JavaScript

在具有焦点和上下文的d3多线图表中,如何将上下文的刷新限制在特定日期?

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

有条件的悲剧

使用续集和下拉栏显示模型属性

Cookie中未保存会话数据

未捕获错误:在注销后重定向到/login页面时找不到匹配的路由

微软Edge编辑和重新发送未显示""

WebRTC关闭navigator. getUserMedia正确

成功完成Reducers后不更新状态

在服务器上放置了Create Reaction App Build之后的空白页面

在我的html表单中的用户输入没有被传送到我的google表单中

setcallback是什么时候放到macrotask队列上的?

如何将react—flanet map添加到remixjs应用程序

使用原型判断对象是否为类的实例

JavaScript不重定向配置的PATH

用于测试其方法和构造函数的导出/导入类

无法使用npm install安装react-dom、react和next