【问题标题】:Edit a href tag url before it's clicked on?在点击之前编辑href标签url?
【发布时间】:2015-11-24 04:46:57
【问题描述】:

我有一个如下所示的网址:

https://url.com/a b c

正如预期的那样。但是,当用户单击此链接时,它会重定向到错误的链接,因为该链接实际上在其 url 中有下划线而不是空格。有没有办法编辑这个网址,以便在点击网址之前,空格变成下划线?网址如下所示:

https://url.com/a_b_c 当用户单击它而不是上面的内容时。以下是我的尝试:

<a target="_blank" style="font-size: 9px" href="https://url.com/{{label}}">[Details]</a>

其中label 等于a b c。我尝试了以下方法:

<a target="_blank" style="font-size: 9px" href="https://url.com/{{label.replace(" ", "_")}}">[Details]</a>

这样a b c 就会变成a_b_c,但这似乎不起作用,因为花括号实际上不能执行replace 函数。任何帮助,将不胜感激。如果可能的话,我还想在这个新替换的标签的末尾附加一些文本,使其看起来像:a_b_c_new_textThanks!

【问题讨论】:

  • 为什么不将label 编辑为需要的实际字符串?
  • 我不能,因为标签是从我的数据库返回的,我不想为了统一而更改。
  • @Harangue 我刚刚尝试了你的建议,但是当我尝试点击它时,标签甚至没有出现在 URL 中。
  • 你确定 label 里面真的有数据吗?
  • @Harangue 是的。当我使用花括号时,它有数据,当我不使用时,什么都不显示。

标签: javascript html angularjs href


【解决方案1】:

由于某种原因,我很难让全局正则表达式替换 .replace(/ /g, '_') 在花括号内工作。相反,我选择了来自this SO answer的解决方案。

<a ng-href="http://url.com/{{label.split(' ').join('_')}}">Click Me</a>

Here's the Codepen.

请记住,ng-href 优于 href,因为它不会在计算花括号之前抛出 404。

【讨论】:

  • Angular 不允许在表达式中创建正则表达式;见docs
【解决方案2】:

试试这个:JS Fiddle

var $link = document.getElementById('test'),
    $href = test.href;
    
test.addEventListener('mouseover', function(){
    $href = $href.replace(/%20/g, '_');
    console.log($href);
	this.href = $href;
});
&lt;a id="test" href="https://url.com/a b c"&gt;Link Data&lt;/a&gt;

【讨论】:

  • 不是一个非常有角度的解决方案。
  • 它是客户端javascript解决方案,OP有:html、javascript、href、tags以及angular!
  • 除了硬编码 a_b_c 之外,有什么方法可以参数化 a b c 吗?
猜你喜欢
  • 2019-05-15
  • 2022-01-16
  • 1970-01-01
  • 2013-06-24
  • 2014-07-01
  • 2014-08-24
  • 2019-03-23
  • 2014-01-26
  • 2011-11-27
相关资源
最近更新 更多