如何在JavaScript中获取href的值

时间:2019-05-21 12:59:46

标签: javascript jquery json

我正在通过json将数据从控制器发送到javascript,而json看起来像这样:

UsernameError: "<p>Username not valid, please</p><a href="www.google.com"> click here</a> <p>to validate it.</p>"

我正在用原始html对其进行转换,使其看起来像:

UsernameError: "<p>Username not valid, please</p><a href="www.google.com"> click here</a> <p>to validate it.</p>"

,当我尝试使用此方法来获取href中的内容时

 var href = $(decoded[0].innerText).attr('href');

undefined的形式出现,但是如果我在json中仅包含a标签,则在变量中设置href值。

有什么想法,如果我在json中有更多标签,为什么我无法获得href值?

3 个答案:

答案 0 :(得分:2)

如果您真的想在真正的html元素中处理内容,则可以使用jquery创建虚拟的html元素,然后使用find方法搜索a-tag。

let decodedString = '<p>Username not valid, please</p><a href="www.google.com"> click here</a> <p>to validate it.</p>';

let htmlContent = $('<div/>').html(decodedString);
let href = htmlContent.find('a').attr('href');

console.log(href);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

答案 1 :(得分:0)

您可以尝试以下正则表达式:

/href="([^\'\"]+)/g

示例:http://regexr.com?333d1

更新:或更简单地通过非贪婪方法

/href="(.*?)"/g

答案 2 :(得分:0)

因为您尝试在多个标签上使用.attr()

.attr()仅适用于在单个标签上获取属性。

您只需选择要解码的标签即可。

尝试:

var href = $(decoded[0].innerText).find('a').attr('href');