为什么控制台提供完整的jsFiddle链接?

时间:2017-07-29 21:21:52

标签: javascript jquery

我写了一个小函数,它基本上是为了检查某些文本是否恰好是这个或那个:

function doSelect(text) {
  return $wikiDOM.find(".infobox th").filter(function() {
    return $(this).text() === text;
  });
}

我运行此操作是为了获取/wiki/之类的一些链接的<a href="/wiki/Geum_River" title="Geum River">Geum River</a>, <a href="/wiki/Korea" title="Korea">Korea</a>之后的最后一个字符串

  let pattern = new RegExp('^\/wiki\/');
  doSelect("Location").siblings('td').find('a').map(function(i, el) {
    return console.log(el.href.replace(pattern, ''));
  });

但是当我在控制台中检查时,我得到了整个jsFiddle链接

https://fiddle.jshell.net/wiki/Geum_River
https://fiddle.jshell.net/wiki/Korea

我希望

Geum_River
Korea

2 个答案:

答案 0 :(得分:1)

问题是因为您正在使用href的{​​{1}}属性。通过这样做,您可以检索URI的完整绝对路径,即:<a>而不是相对路径:https://fiddle.jshell.net/wiki/Geum_River

要更改此行为,请使用/wiki/Geum_River

直接使用属性值
attr()

另外,请仔细检查您是否正确使用let pattern = new RegExp('^\/wiki\/'); doSelect("Location").siblings('td').find('a').map(function(i, el) { var result = $(this).attr('href').replace(pattern, ''); console.log(result); return result; }); 。它的目的是创建一个数组,但你没有对它做任何反应。如果您只想循环选择的元素,那么在没有map()的情况下使用each()是值得的:

return

答案 1 :(得分:1)

你也可以尝试这样:

//let pattern = new RegExp('^\/wiki\/');
doSelect("Location").siblings('td').find('a').each(function(i, el) {    
  var name = $(this).attr('href').split('wiki/')[1].trim();
  console.log(result);
});