Javascript JS:我们如何使用CSS中的类?
我们如何使用javascript操作DOM元素类?是否有getElementsByClassName函数?标准方式是Javascript JS:我们如何使用CSS中的类?,javascript,Javascript,我们如何使用javascript操作DOM元素类?是否有getElementsByClassName函数?标准方式是 error_message.className = 'error-message'; 但是你会发现这些函数可以简化很多事情: function hasClass(ele,cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); } //chekcs if selected elemen
error_message.className = 'error-message';
但是你会发现这些函数可以简化很多事情:
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
//chekcs if selected element has class "cls", works for elements with multiple classes
function addClass(ele,cls) {
if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
//adds new class to element
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
//removes class from element
var childNodes=document.getElementById("questions").childNodes; //array of all questions
for (var i=1; i<childNodes.length; i+=2) //iterates through all questions on page.
{
removeClass(childNodes[i],"tagged-ignored-hidden");
addClass(childNodes[i],"user_defined_class");
}
在stackoverflow greasemonkey脚本中用于显示页面上的所有问题,无论这些问题是否被忽略:
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
//chekcs if selected element has class "cls", works for elements with multiple classes
function addClass(ele,cls) {
if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
//adds new class to element
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
//removes class from element
var childNodes=document.getElementById("questions").childNodes; //array of all questions
for (var i=1; i<childNodes.length; i+=2) //iterates through all questions on page.
{
removeClass(childNodes[i],"tagged-ignored-hidden");
addClass(childNodes[i],"user_defined_class");
}
var childNodes=document.getElementById(“问题”).childNodes//各种各样的问题
对于(var i=1;i,您可以使用以下方式在纯旧JavaScript中更改类:
document.getElementById('myElement').className = 'myClass';
或者,如果您使用的是JQuery,则可以使用
解决有关“getElementsByClassName”问题和您的评论的附加细节:
为此,使用您最喜欢的JavaScript库可能是最安全(也是最容易的)
JQuery示例:
$(".myClassName").each(function() {
//do what you want with the current element $(this)
});
希望能有所帮助。许多JavaScript实现都内置了GetElementsByCassName
方法。但如果没有,您可以自己实现:
if (typeof Element.prototype.getElementsByClassName == "undefined") {
Element.prototype.getElementsByClassName = function(className) {
var elems = document.getElementsByTagName("*"),
matches = [];
for (var i=0, n=elems.length; i<n; ++i) {
if (elems[i].hasAttribute("class")) {
var classNames = elems[i].getAttribute("class").split(/\s+/);
for (var j=0,m=classNames.length; j<m; ++j) {
if (classNames[j] == className) {
matches.push(elems[i]);
break;
}
}
}
}
return new NodeList(matches);
};
}
if(typeof Element.prototype.getElementsByClassName==“未定义”){
Element.prototype.getElementsByClassName=函数(类名){
var elems=document.getElementsByTagName(“*”),
匹配项=[];
对于(变量i=0,n=elems.length;imyElement?myelement呢?