“ document.getElementByClass 不是函数”

我试图运行一个函数 onclick的任何按钮与 class="stopMusic"。我得到了一个错误在 Firebug

GetElementByClass 不是一个函数

这是我的代码:

var stopMusicExt = document.getElementByClass("stopButton");
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};
741349 次浏览

您可能指的是 document.getElementsByClassName()(然后从结果节点列表中抓取第一项) :

var stopMusicExt = document.getElementsByClassName("stopButton")[0];


stopButton.onclick = function() {
var ta = document.getElementsByClassName("stopButton")[0];
document['player'].stopMusicExt(ta.value);
ta.value = "";
};

你可能仍然会得到错误

document.getElementsByClassName不是一个函数

但是,在老浏览器中,如果需要支持那些老浏览器,则可以提供备用实现。

应该是 getElementsByClassName而不是 getElementByClass看这个 https://developer.mozilla.org/en/DOM/document.getElementsByClassName

请注意,有些浏览器/版本可能不支持这一点。

正如其他人所说,您没有使用正确的函数名,而且它并非在所有浏览器中都普遍存在。

如果您需要跨浏览器获取除具有 document.getElementById() id 的元素之外的任何内容,那么我强烈建议您使用一个跨所有浏览器支持 CSS3选择器的库。它将为您节省大量的开发时间、测试和 bug 修复。最简单的方法就是使用 JQuery,因为它被广泛使用,有优秀的文档,有免费的 CDN 访问权限,并且有一个优秀的社区来支持它回答问题。如果这看起来超出了您的需要,那么您可以得到 好极了,它只是一个选择器库(它实际上是 jQuery 和其他内部的选择器引擎)。我在其他项目中使用过它,它简单、高效、小巧。

如果希望一次选择多个节点,可以采用多种不同的方法。如果你给他们上同样的课,你可以这样做:

var list = document.getElementsByClassName("myButton");
for (var i = 0; i < list.length; i++) {
// list[i] is a node with the desired class name
}

它将返回具有该类名称的节点列表。

在 Sizzle,情况是这样的:

var list = Sizzle(".myButton");
for (var i = 0; i < list.length; i++) {
// list[i] is a node with the desired class name
}

在 jQuery 中,它是这样的:

$(".myButton").each(function(index, element) {
// element is a node with the desired class name
});

在 Sizzle 和 jQuery 中,您可以像下面这样将多个类名放入选择器,并使用更复杂、更强大的选择器:

$(".myButton, .myInput, .homepage.gallery, #submitButton").each(function(index, element) {
// element is a node that matches the selector
});

在进入任何进一步的错误检查之前,请先检查它是否

GetElement<是的trong>是的ByClassName ()本身。

仔细检查它的 getElement<是的trong>是的而不是 getElement

    enter code here
var stopMusicExt = document.getElementByClass("stopButton").value;
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};




// .value will hold all data from class stopButton

document.querySelectorAll工作得非常好,可以进一步缩小您的选择范围。

Https://developer.mozilla.org/en-us/docs/web/api/document/queryselectorall

你拼错了,应该是“ getElementsByClassName”,

var objs = document.getElementsByClassName("stopButton");
var stopMusicExt = objs[0]; //retrieve the first node in the stack


//your remaining function goes down here..
document['player'].stopMusicExt(ta.value);
ta.value = "";

GetElementsByClassName-返回一个包含多个条目的节点堆栈,因为 CLASS 属性用于分配给多个对象..。

getElementByClass不存在,可能您想使用 getElementsByClassName。然而,您可以使用替代方法(使用在角度/价值/反应... 模板)

function stop(ta) {
console.log(ta.value) // document['player'].stopMusicExt(ta.value);
ta.value='';
}
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 1'>
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 2'>

如果您编写了这个“ getElementByClassName”,那么您将会遇到这个错误“ document.getElementByClass 不是一个函数”,因此要克服这个错误,只需编写“ getElementsByClassName”。因为它应该是 Element 而不是 Element。

我的解决办法是:

  • 改变:

    document.getElementsByClassName('.className')
    
  • document.querySelector('.className')
    

它应该是 getElementsByClassName而不是 getElementByClassName = = > 你错过了 Elements中的 "s"

const collectionItems = document.getElementsByClassName('.item');

document.getElementByClass不是一个函数

是的,它不是一个函数或方法,因为它应该是 document.getElementsByClassName