Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:我们如何使用CSS中的类?_Javascript - Fatal编程技术网

Javascript JS:我们如何使用CSS中的类?

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

我们如何使用javascript操作DOM元素类?是否有getElementsByClassName函数?

标准方式是

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呢?