我正在尝试使用来运行onclick
任何按钮的功能class="stopMusic"
。我在Firebug中遇到错误
document.getElementByClass不是函数
这是我的代码:
var stopMusicExt = document.getElementByClass("stopButton");
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};
您可能是想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
不是功能
但是,在较旧的浏览器中,如果需要支持那些较旧的浏览器,则可以提供后备实现。
As others have said, you're not using the right function name and it doesn't exist univerally in all browsers.
如果您需要跨浏览器获取除带有ID的id之外的任何元素document.getElementById()
,那么我强烈建议您获得一个支持所有浏览器的CSS3选择器的库。这将为您节省大量的开发时间,测试和错误修复。最简单的方法是仅使用jQuery,因为它是如此广泛,具有出色的文档,具有免费的CDN访问权限,并且背后有很多人来回答问题。如果这似乎超出了您的需要,那么您可以获取Sizzle,它只是一个选择器库(实际上是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
});
在跳入任何进一步的错误检查之前,请先检查其是否
document.getElement的ByClassName()本身。
仔细检查其getElement小号,而不是getElement
应该是getElementsByClassName
,不是getElementByClass
。请参见-https: //developer.mozilla.org/en/DOM/document.getElementsByClassName。
请注意,某些浏览器/版本可能不支持此功能。
document.querySelectorAll
效果很好,可让您进一步缩小选择范围。
https://developer.mozilla.org/zh-CN/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 = "";
document.getElementsByClassName-返回具有多个项的节点堆栈,因为CLASS属性用于分配给多个对象...
如果您编写了此“ getElementByClassName”,则将遇到此错误“ document.getElementByClass不是函数”,因此要克服该错误,只需编写“ getElementsByClassName”。因为应该是元素而不是元素。
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
将getElementByClass
不存在,可能要使用getElementsByClassName
。但是,您可以使用其他方法(用于angular / vue / react ...模板)
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'>
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!