javascript - 更改href后链接的onclick不起作用,但在新选项卡中打开有效
问题描述
我有下面的锚标签。我正在尝试搜索具有值 xyz 的属性,然后更改其 herf 并删除不需要的属性。
在控制台上执行此操作后,我可以看到 href 已更改,但单击链接不起作用。但是,当我在新选项卡中打开时,它会以新的 href 打开
<a data-data="test" data-name="xyz" href="#" class="button">this is a link</a>
var pmLink = document.querySelectorAll("[data-name='xyz']");
if (pmLink) {
pmLink[0].href = "http://www.google.com";
pmLink[0].removeAttribute("data-data");
pmLink[0].removeAttribute("data-name");
}
解决方案
改成:var pmLink = document.querySelector("[data-name='xyz']");
工作片段:
var pmLink = document.querySelector("[data-name='xyz']");
if (pmLink) {
pmLink.setAttribute('href', 'http://www.google.com');
pmLink.removeAttribute("data-data");
pmLink.removeAttribute("data-name");
}
<a data-data="test" data-name="xyz" href="#" class="button">this is a link</a>
如果你有多个然后data-name="xyz"
使用querySelectorAll然后你需要迭代和“ this ”。
希望有帮助!享受代码!
推荐阅读
- c# - 更改扩展窗口的窗口标题字体
- java - Lucene 建议:使用 CompletionQuery 时出现“不是 SuggestField”异常
- javascript - Redux 从本地文件加载初始数据,然后从状态加载
- javascript - 从元素中获取画布对象
- javascript - 在状态更改*和*按钮单击时调用函数
- c# - Visual Studio 错误-XLS0509 - 如何解决?- XAML - 微软教程
- centos8 - 在 CentOS8 的 gdm 启动期间启动 Synergy (greeter)
- java - 如何使用 jOOQ fetchInto() 映射到现有的 Hibernate 模型?
- json - 无效的 JSON 格式,无法将其视为树
- laravel - Nuxt 和 Laravel API 之间的认证