有没有办法让 <button> 元素链接到一个位置而不用将它包装在 <a href ... 标签中?

IT技术 javascript html button hyperlink
2021-03-06 12:46:19

只是想知道是否有办法让 HTML<button>元素链接到某个位置而不用将其包装在<a href...标签中?

按钮目前看起来像:

<button>Visit Page Now</button>

我宁愿有:

<a href="link.html"><button>Visit Page Now</button></a>

该按钮未在表单中使用,因此<input type="button">不是一个选项。我只是想知道是否有一种方法可以链接此特定元素而无需将其包装在<a href标签中。

期待听到一些选择/意见。

6个回答

内联 Javascript:

<button onclick="window.location='http://www.example.com';">Visit Page Now</button>

在 Javascript 中定义一个函数:

<script>
    function visitPage(){
        window.location='http://www.example.com';
    }
</script>
<button onclick="visitPage();">Visit Page Now</button>

或在 Jquery 中

<button id="some_id">Visit Page Now</button>

$('#some_id').click(function() {
  window.location='http://www.example.com';
});
我正在使用ASP.NET MVC我怎样才能POST获取数据并指向Controller 的另一个Action Method
2021-05-13 12:46:19
这是一个误导性的答案,因为链接元素将是所需的元素。选择元素时将功能和设计分开!
2021-05-15 12:46:19
谢谢@aiham,这奏效了。为了使它更灵活,url 应该是visitPage 函数的参数。
2021-05-16 12:46:19

这是一个即使在禁用 JavaScript 时也能工作的解决方案:

<form action="login.html">
    <button type="submit">Login</button>
</form>

诀窍是用自己的<form>标签包围按钮

我个人更喜欢<button>标签,但你也可以这样做<input>

<form action="login.html">
    <input type="submit" value="Login"/>
</form>
一个问题:action属性值中的任何 URL 参数都将被剥离,因为get-method 表单(和表单默认为getmethod)应该提供它们自己的参数。例如,<form action="https://example.com/foo?bar=1"><input type="submit" value="Login"/></form>将用户发送到“ https://example.com/foo?”。如果您method="post"form元素中设置了属性值,用户将被发送到正确的 URL ,但目的地可能仍然有问题,因为该站点随后收到了一个 POST 请求,而不是预期的 GET 请求。
2021-05-02 12:46:19

就这样做

<button OnClick=" location.href='link.html' ">Visit Page Now</button>

虽然,自从我接触 JavaScript 已经有一段时间了——也许location.href已经过时了?无论如何,这就是我要做的。

链接很棘手

考虑默认情况下 <a href> 知道但 javascript 链接不会为您做的技巧。在一个像样的网站上,任何想要充当链接的东西都应该以某种方式实现这些功能。即:

  • Ctrl+单击:在新选项卡中打开链接
    您可以使用不带位置/大小参数的 window.open() 来模拟这一点
  • Shift+单击:在新窗口中打开链接
    您可以通过指定大小和/或位置的 window.open() 模拟此操作
  • Alt+Click: 下载目标
    人们很少使用这个,但如果你坚持模拟它,你需要在服务器端编写一个特殊的脚本来响应正确的下载标头。

简单的办法

现在,如果你不想模仿所有的行为,我建议使用<a HREF>和风格它一个按钮,因为按钮本身是一个大致的形状和悬停效果。我认为如果只有“按钮而没有别的”在语义上并不重要,<a href> 是武士的方式。如果你担心语义和可读性,你也可以在你的文档准备好时替换按钮元素()。这是清晰和安全的。

嗯,对于一个链接,周围必须有一个链接标签。您还可以做的是为按钮创建一个 css 类并将该类分配给链接标签。喜欢,

#btn {
  background: url(https://image.flaticon.com/icons/png/128/149/149668.png) no-repeat 0 0;
  display: block;
  width: 128px;
  height: 128px;
  border: none;
  outline: none;
}
<a href="btnlink.html" id="btn"></a>