现在我知道它可能看似重复,但事实并非如此。我阅读了有这个标题的所有其他帖子,但找不到答案。 我有:
<ul>
<a id="A" class="tablink">A</a>
<a id="B" class=tablink">B</a>
...
</ul>
我希望上面元素的id是来自另一个无序列表的另一个列表元素的href。
<ul>
<a id="1" class="subjects" >1</a>
<a id="2" class="subjects">2</a>
</ul>
我已经有了这段代码
<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>
但它显示标题中的错误。如果我设置:document.getElementById("subjects")
,我也必须将主题更改为id而不是课堂。所以它只适用于一个元素,但我有更多的元素,所以我假设我必须做一些for循环?
编辑:使用jQuery完成的COul,没有for循环?如果是,怎么样?
答案 0 :(得分:7)
document.getElementsByClassName("subjects")
返回一个元素数组。你不能像那样设置它的href属性。也许你想要:
var elems = document.getElementsByClassName("subjects");
for(i=0;i<elems.length;i++) {
elems[i].href = "yourhref";
}
更新:您在此行收到错误:document.getElementsByClassName("subjects").getAttribute("id")
如上所述,document.getElementsByClassName("subjects")
会向您返回一个数组,并且您尝试在其上调用getAttribute
函数。所以它可能抛出document.getElementsByClassName(...).getAttribute is not a function
答案 1 :(得分:0)
Element.getAttribute()只是一个Element的函数,而不是你拥有的HTMLCollection。 这就是MDN所说的:
getAttribute()返回元素上指定属性的值。
阅读here。
答案 2 :(得分:0)
执行document.getElementsByClassName("subjects")
后,您会获得HTMLCollection
。
现在,你无法获得此集合的id属性,因为它没有意义。
他必须收到错误"getAttribute is not a function"
。