在控制台中出现“ document.getElementByClassName不是函数”错误

时间:2019-11-11 19:29:15

标签: javascript html css wordpress

任何解决此错误的方法:“ document.getElementByClassName不是函数”

下面的代码:

HTML:

<a href="#" class="filter-btn" onclick="myFunction()" data-filter="opd-list-id-<?php echo $item->ID; ?>" style="background:<?php echo $filter_background_color ?>;color:<?php echo $filter_text_color ?> !important;">

JS

function myFunction() {
var elmnt = document.getElementByClassName("filter-btn");
elmnt.scrollIntoView(); 
}

2 个答案:

答案 0 :(得分:1)

getElementByClassName替换getElementsByClassName

请注意,其复数(Elements)的末尾带有“ s”,而不是单数(Element

可以将同一个类添加到多个对象,因此,按类名称进行选择会返回多个项目,而不仅仅是一个项目,因此它使用复数形式Elements而不是Element,就像getElementById()作为id一样必须是唯一的,并且按id选择将仅返回一个DOM元素

,并且由于函数getElementsByClassName返回元素数组elmnt.scrollIntoView()不起作用,
因此您需要将数组的第一个元素用作elmnt[0]

因此您的代码将是

function myFunction() {
  var elmnt = document.getElementsByClassName("filter-btn");
  elmnt[0].scrollIntoView(); 
}

但是,如果您只想选择一个元素并按如下所示使用,我宁愿建议使用getElementById(首先给ID IdGivenToTheAnchoreTag定位标记)

function myFunction() {
  var elmnt = document.getElementById("IdGivenToTheAnchoreTag");
  elmnt.scrollIntoView(); 
}

答案 1 :(得分:0)

您正在寻找getElementsByClassName。注意元素上的“ s”

function myFunction() {
  var elmnt = document.getElementsByClassName("filter-btn");
  test.scrollIntoView();  
}