getElementsByClassName不是函数javascript

mrh*_*nar 1 javascript jquery dom

现在我知道它可能看似重复,但事实并非如此.我阅读了这个标题的所有其他帖子,但找不到答案.我有:

<ul>
  <a id="A" class="tablink">A</a>
  <a id="B" class=tablink">B</a>
...
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要上面元素的id,是来自另一个无序列表的另一个列表元素的href.

<ul>
  <a id="1" class="subjects" >1</a>
  <a id="2" class="subjects">2</a>
</ul>
Run Code Online (Sandbox Code Playgroud)

我已经有了这个代码

<script type="text/javascript">

$(".tablink").on("click", function(){
  var char = this.getAttribute("id");
  var link = document.getElementsByClassName("subjects").getAttribute("id");
  document.getElementsByClassName("subjects").href = char + link

  });
</script>
Run Code Online (Sandbox Code Playgroud)

但它显示标题中的错误.如果我设置它是有效的:document.getElementById("subjects")我还必须将主题更改为id而不是课堂.所以它只适用于一个元素,但我有更多的元素,所以我假设我必须做一些for循环?编辑:使用jQuery完成的COul,没有for循环?如果有,怎么样?

meh*_*mpt 7

document.getElementsByClassName("subjects")返回一个元素数组.你不能像那样设置它的href属性.也许你想要:

var elems = document.getElementsByClassName("subjects");
for(i=0;i<elems.length;i++) {
   elems[i].href = "yourhref";
}
Run Code Online (Sandbox Code Playgroud)

更新:你在这一行得到错误: document.getElementsByClassName("subjects").getAttribute("id")

正如我上面所说,document.getElementsByClassName("subjects")返回一个数组,你正试图调用getAttribute它上面的函数.所以它可能会抛出document.getElementsByClassName(...).getAttribute is not a function

  • 我很确定OP对他正在做的事情一无所知,甚至没有看到错误,只是复制并粘贴代码以获得一些帮助. (2认同)