对象不支持属性或方法'slice'

时间:2015-07-05 14:44:40

标签: javascript jquery slice

我是Javascript / Jquery世界的新手。 我有一个带有几个链接的div,我想收集网址。

然后我想从那些href中提取最后9个字符(实际上我希望优化它并在每个字符串的末尾独立地收集数字)。我试图用slice()方法提取它们但它不起作用。

在控制台中,错误是

  

Object不支持属性或方法'slice'

我可以将对象转换为字符串吗?非常感谢您的帮助! 代码如下

$(document).ready(function(){

  var $posts= $('a.entry_title').each(function(){
    $(this).attr('href');
  });

  var posts1 = $posts[0].slice(-9);
  var posts2 = $posts[1].slice(-9);

  var posts = ["MyURL"+ posts1,"MyURL"+posts2]
  $('#div1').load(posts[0] + " .shadow3");
  $('#div2').load(posts[1] + " .shadow3");

});
</script>

2 个答案:

答案 0 :(得分:4)

您看到Object不支持,因为$.each返回一个jQuery对象。

使用.map()代替它,因为它返回一个切片可以工作的数组

var $posts= $('a.entry_title').map(function(){
   return $(this).attr('href');
});

结果将是

["link1", "link2", "link3"....] // just a sample

如果您希望获得每个链接的最后九个字符的href数组,您可以使用这种方式映射

var $posts= $('a.entry_title').map(function(){
   return $(this).attr('href').slice(-9); // or you can do your own magic
});

结果看起来像这样

["k1", "k2", "k3"....] // after slicing the words 

答案 1 :(得分:0)

尝试下一个:

var hrefs = []; // list of collected and sliced hrefs.
var $posts= $('a.entry_title').each(function() {
    // slice & push each href into list.
    hrefs.push($(this).attr('href').slice(-9));
});
console.log('href list:', hrefs); // control result.
var posts = ["MyURL"+ hrefs[0],"MyURL"+hrefs[1]]