TypeError: $(. .)[1].Attr不是一个函数

TypeError: $(...)[1].attr is not a function

本文关键字:函数 一个 TypeError Attr      更新时间:2023-09-26

链接设置如下:

HTML:

<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">

我想要得到<a>标签包含的href s。我尝试遍历每个链接,像这样:

Javascript/jQuery:
for (x=0; x < 5; x++) {
  link = $(".some-link")[x].attr("href");
  console.log(link);
}

当我尝试这个时,我得到错误TypeError: $(...)[x].attr is not a function。有什么问题吗?谢谢。

这里需要使用 eq() ,因为$(".some-link")[x]返回dom对象 attr() 方法只能与jQuery对象一起使用。所以你需要使用 eq(x) 或者 :eq()

for (x=0; x < 5; x++) {
   link = $(".some-link").eq(x).attr("href");
   console.log(link);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">

或者您可以使用 each() 方法代替

$(".some-link").each(function(){
   var link=$(this).attr("href");
   console.log(link);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">

或更简单的方法使用 attr() 与回调

$(".some-link").attr("href",function(i,link){
   console.log(link);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="www.example1.com" class="some-link">
<a href="www.example2.com" class="some-link">
<a href="www.example3.com" class="some-link">
<a href="www.example4.com" class="some-link">
<a href="www.example4.com" class="some-link">

[1]索引器(相当于.get())不返回jQuery元素,而是返回DOM元素。试着

var link = $(".some-link").eq(x).attr("href");

作为旁注,您可能希望使用var声明变量。