如何在jquery for循环中使用字符串替换?

时间:2018-06-08 17:56:13

标签: javascript jquery

我试图从网址中删除域名 - 但不确定具体如何。这是我正在尝试的,但你可以看到console.log在第二次尝试时没有显示任何内容。

function show_records(data) {
  let html = "";
  $.each(data, function(k, v){
    console.log(v.url)  // returns full urls eg. https://google.com
    v.url = v.url.replace(/https?:\/\/[^\/]+/i, "");
    console.log(v.url)  // returns nothing
    html += `<input type="radio" name="${v.url}" /> ${ v.url }<br />`
  })
  html+='</div></div>'
  $('.editviewm').append(html);

}    

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

这是因为你的正则表达式匹配整个字符串而不仅仅是域名。

使用Dark Absol在评论中建议的@Niet

v.url.replace(new URL(v.url).hostname, '');

如果您只想使用路径

a = new URL(window.location.href);
console.log(a.pathname);

答案 1 :(得分:0)

作为@Niet the Dark Absol建议,您不需要为了获得主机名而执行更多代码。

function show_records(data) {
  let html = "";
  $.each(data, function(k, v){
    var url = new URL(v.url); 
    console.log(url.hostname);
    html += `<input type="radio" name="${url.hostname}" /> ${ url.hostname }<br />`
  })
  html+='</div></div>'
  $('.editviewm').append(html);

}