代码之家  ›  专栏  ›  技术社区  ›  david

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

  •  0
  • david  · 技术社区  · 7 年前

    我正在尝试从url中去掉这个域,但不确定具体是如何删除的。这是我正在尝试的,但是你可以看到控制台。在第二次尝试中,日志没有显示任何东西。

    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 回复  |  直到 7 年前
        1
  •  0
  •   Rohit.007    7 年前

    正如@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);
    
    } 
    
        2
  •  0
  •   Jerinaw    7 年前

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

    使用@niet the dark absoll在评论中的建议

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

    如果你只是想用这条路

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