Javascript lso在现代浏览器中使用。

Javascript lso在现代浏览器中使用。,javascript,html,dom,Javascript,Html,Dom,我想我应该加入以下内容: function inArray(val, ary){ for(var i=0,l=ary.length; i<l; i++){ if(ary[i] === val){ return true; } } return false; } function removeClassName(classNameS, fromElement){ var x = classNameS.split(/\s/), s = fromEle

我想我应该加入以下内容:

function inArray(val, ary){
  for(var i=0,l=ary.length; i<l; i++){
    if(ary[i] === val){
      return true;
    }
  }
  return false;
}
function removeClassName(classNameS, fromElement){
  var x = classNameS.split(/\s/), s = fromElement.className.split(/\s/), r = [];
  for(var i=0,l=s.length; i<l; i++){
    if(!iA(s[i], x))r.push(s[i]);
  }
  fromElement.className = r.join(' ');
}
function addClassName(classNameS, toElement){
  var s = toElement.className.split(/\s/);
  s.push(c); toElement.className = s.join(' ');
}
函数数组(val,ary){

对于(var i=0,l=ary.length;i这里有一个toggleClass来切换/添加/删除元素上的类:

// If newState is provided add/remove theClass accordingly, otherwise toggle theClass
function toggleClass(elem, theClass, newState) {
    var matchRegExp = new RegExp('(?:^|\\s)' + theClass + '(?!\\S)', 'g');
    var add=(arguments.length>2 ? newState : (elem.className.match(matchRegExp) == null));

    elem.className=elem.className.replace(matchRegExp, ''); // clear all
    if (add) elem.className += ' ' + theClass;
}

另请参见我关于动态创建新类的回答

使用支持IE6的vanilla JavaScript更改元素的类 您可以尝试使用node
attributes
属性来保持与旧浏览器的兼容性,即使是IE6:

函数getClassNode(元素){ 对于(var i=element.attributes.length;i--;) if(element.attributes[i].nodeName=='class') 返回元素.attributes[i]; } 函数removeClass(类节点,类名称){ var索引,classList=classNode.value.split(“”); if((index=classList.indexOf(className))>-1){ 拼接(索引1); classNode.value=classList.join(“”); } } 函数hasClass(类节点,类名称){ 返回classNode.value.indexOf(className)>-1; } 函数addClass(类节点,类名称){ if(!hasClass(classNode,className)) classNode.value+=''+类名; } document.getElementById('message')。addEventListener('click',function(){ var classNode=getClassNode(这个); var className=hasClass(classNode,“红色”)和&“蓝色”| |“红色”; removeClass(类节点,“红色”); removeClass(类节点,“蓝色”); addClass(类节点,类名称); })
.red{
颜色:红色;
}
瑞德:以前{
内容:“我是红色的!”;
}
雷德:以后{
内容:"再次";;
}
蓝先生{
颜色:蓝色;
}
蓝:以前{
内容:“我是蓝色的!”
}

单击我
只需说
myElement.classList=“new class”
,除非您需要维护其他现有类,在这种情况下,您可以使用
classList.add、.remove
方法

var doc=单据;
var divOne=doc.getElementById(“一”);
var goButton=doc.getElementById(“go”);
addEventListener(“单击”,函数(){
divOne.classList=“蓝色”;
});
div{
最小高度:48px;
最小宽度:48px;
}
.边界{
边框:1px纯黑;
}
格林先生{
背景:绿色;
}
蓝先生{
背景:蓝色;
}
更改类

好的,我认为在这种情况下,您应该使用jQuery或用纯javascript编写自己的方法,如果出于其他原因不需要,我更喜欢添加自己的方法,而不是将所有jQuery注入到我的应用程序中

我想在我的javascript框架中添加一些类似于以下的方法,以添加一些处理添加类、删除类等的功能,类似于jQuery,这在IE9+中是完全支持的,而且我的代码是用ES6编写的,所以您需要确保您的浏览器支持它,或者使用类似babel的东西,否则需要使用ES5代码中的语法,也是这样,我们通过ID查找元素,这意味着元素需要有一个要选择的ID:

//simple javascript utils for class management in ES6
var classUtil = {

  addClass: (id, cl) => {
    document.getElementById(id).classList.add(cl);
  },

  removeClass: (id, cl) => {
    document.getElementById(id).classList.remove(cl);
  },

  hasClass: (id, cl) => {
    return document.getElementById(id).classList.contains(cl);
  },

  toggleClass: (id, cl) => {
    document.getElementById(id).classList.toggle(cl);
  }

}
您只需按如下方式调用使用它们,假设您的元素的id为'id',class为'class',确保将它们作为字符串传递,您可以按如下方式使用util:

classUtil.addClass('myId', 'myClass');
classUtil.removeClass('myId', 'myClass');
classUtil.hasClass('myId', 'myClass');
classUtil.toggleClass('myId', 'myClass');
classList
domapi: 添加和删除类的一种非常方便的方式是
classList
DOM API。该API允许我们选择特定DOM元素的所有类,以便使用javascript修改列表。例如:

<script type="text/javascript">
    function changeClass(){
        // Code examples from above
    }
</script>
...
<button onclick="changeClass()">My Button</button>
const el=document.getElementById(“main”);
console.log(el.classList);

是的,有很多方法可以做到这一点。在ES6语法中,我们可以轻松实现。 使用此代码切换添加和删除类

const tabs=document.querySelectorAll('.menu li');
对于(让选项卡中的选项卡){
tab.onclick=function(){
让activetab=document.querySelectorAll('li.active');
activetab[0]。类列表。删除('active')
tab.classList.add('active');
}
}
正文{
填充:20px;
字体系列:无衬线;
}
保险商实验室{
利润率:20px0;
列表样式:无;
}
李{
背景:#dfdf ;;
填充:10px;
利润率:6px0;
光标:指针;
}
李:很活跃{
背景#2794c7;
字体大小:粗体;
颜色:#ffffff;
}
请单击一个项目:
  • 三个
  • 两个
  • 一个

很多答案,很多好答案

TL;DR:

就这样。

而且,如果你真的想知道原因并教育自己,那么我建议你阅读,它是完美的

注意:
这在以下情况下是可能的:

  • getElementById()
  • getElementsByClassName()
  • querySelector()
  • querySelectorAll()
试试看

element.className='second'
函数更改(box){box.className='second'}
.first{宽度:70px;高度:70px;背景:#ff0}
.second{宽度:150px;高度:150px;背景:f00;过渡:1s}
点击我

选项。 下面是一个小的style vs.classList示例,让您了解您有哪些可用选项,以及如何使用
classList
做您想做的事情

vs。
style
classList
之间的区别在于,使用
style
可以添加到元素的样式属性中,但是
classList
可以控制元素的类(
add
remove
toggle
contain
),我将向您展示如何使用
add
remove
方法,因为这些方法都很流行


样式示例 如果要将
margin top
属性添加到元素中,可以执行以下操作:

// Get the Element
const el = document.querySelector('#element');

// Add CSS property 
el.style.margintop = "0px"
el.style.margintop = "25px" // This would add a 25px to the top of the element.

类列表示例 假设我们有一个
,在本例中,我们已经在div元素中添加了两个类,
class-a
class-b
,我们想要控制哪些类
删除哪些类以及
添加哪些类
<script type="text/javascript">
    function changeClass(){
        // Code examples from above
    }
</script>
...
<button onclick="changeClass()">My Button</button>
<script type="text/javascript">
    function changeClass(){
        // Code examples from above
    }

    window.onload = function(){
        document.getElementById("MyElement").addEventListener( 'click', changeClass);
    }
</script>
...
<button id="MyElement">My Button</button>
$('#MyElement').addClass('MyClass');

$('#MyElement').removeClass('MyClass');

if ( $('#MyElement').hasClass('MyClass') )
$('#MyElement').toggleClass('MyClass');
$('#MyElement').click(changeClass);
$(':button:contains(My Button)').click(changeClass);
document.getElementById("MyElement").className = document.getElementById("MyElement").className.replace(/\bMyClass\b/','')
document.getElementById("MyElement").className = document.getElementById("MyElement").className.replace('/\bMyClass\b/','');
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        lbSave.Attributes.Add("onmouseover", "this.className = 'LinkButtonStyle1'")
        lbSave.Attributes.Add("onmouseout", "this.className = 'LinkButtonStyle'")
        lbCancel.Attributes.Add("onmouseover", "this.className = 'LinkButtonStyle1'")
        lbCancel.Attributes.Add("onmouseout", "this.className = 'LinkButtonStyle'")
    End If
End Sub
function hasClass(ele, cls) {
    return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls) {
    if (!hasClass(ele, cls)) ele.className += " " + cls;
}
function removeClass(ele, cls) {
    if (hasClass(ele, cls)) {
        var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        ele.className = ele.className.replace(reg, ' ');
    }
}
<script type="text/javascript">
    function changeClass(btn, cls) {
        if(!hasClass(btn, cls)) {
            addClass(btn, cls);
        }
    }
</script>
...
<button onclick="changeClass(this, "someClass")">My Button</button>
function hasClass(ele, cls) {
    return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}

function addClass(ele, cls) {
    if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}

function removeClass(ele, cls) {
    if (hasClass(ele, cls)) {
        var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        ele.className = ele.className.replace(reg, ' ');
    }
}

function replaceClass(ele, oldClass, newClass){
    if(hasClass(ele, oldClass)){
        removeClass(ele, oldClass);
        addClass(ele, newClass);
    }
    return;
}

function toggleClass(ele, cls1, cls2){
    if(hasClass(ele, cls1)){
        replaceClass(ele, cls1, cls2);
    }else if(hasClass(ele, cls2)){
        replaceClass(ele, cls2, cls1);
    }else{
        addClass(ele, cls1);
    }
}
goog.dom.classes.add(element, var_args)

goog.dom.classes.addRemove(element, classesToRemove, classesToAdd)

goog.dom.classes.remove(element, var_args)
var myElement = goog.dom.query("#MyElement")[0];
function setCSS(eleID) {
    var currTabElem = document.getElementById(eleID);

    currTabElem.setAttribute("class", "some_class_name");
    currTabElem.setAttribute("className", "some_class_name");
}
<div class="firstClass" onclick="this.className='secondClass'">
var s = "testing   one   four  one  two";
var cls = "one";
var rg          = new RegExp("(^|\\s+)" + cls + "(\\s+|$)", 'ig');
alert("[" + s.replace(rg, ' ') + "]");
var cls = "test";
var rg          = new RegExp("(^|\\s+)" + cls + "(\\s+|$)", 'ig');
alert("[" + s.replace(rg, ' ') + "]");
var cls = "testing";
var rg          = new RegExp("(^|\\s+)" + cls + "(\\s+|$)", 'ig');
alert("[" + s.replace(rg, ' ') + "]");
var cls = "tWo";
var rg          = new RegExp("(^|\\s+)" + cls + "(\\s+|$)", 'ig');
alert("[" + s.replace(rg, ' ') + "]");
jQuery(function($) {
    $("#some-element").click(function() {
        $(this).toggleClass("clicked");
    });
});
function addHTMLClass(item, classname) {
    var obj = item
    if (typeof item=="string") {
        obj = document.getElementById(item)
    }
    obj.className += " " + classname
}

function removeHTMLClass(item, classname) {
    var obj = item
    if (typeof item=="string") {
        obj = document.getElementById(item)
    }
    var classes = ""+obj.className
    while (classes.indexOf(classname)>-1) {
        classes = classes.replace (classname, "")
    }
    obj.className = classes
}
<tr onmouseover='addHTMLClass(this,"clsSelected")'
onmouseout='removeHTMLClass(this,"clsSelected")' >
HTMLElement = typeof(HTMLElement) != 'undefiend' ? HTMLElement : Element;

HTMLElement.prototype.addClass = function(string) {
  if (!(string instanceof Array)) {
    string = string.split(' ');
  }
  for(var i = 0, len = string.length; i < len; ++i) {
    if (string[i] && !new RegExp('(\\s+|^)' + string[i] + '(\\s+|$)').test(this.className)) {
      this.className = this.className.trim() + ' ' + string[i];
    }
  }
}

HTMLElement.prototype.removeClass = function(string) {
  if (!(string instanceof Array)) {
    string = string.split(' ');
  }
  for(var i = 0, len = string.length; i < len; ++i) {
    this.className = this.className.replace(new RegExp('(\\s+|^)' + string[i] + '(\\s+|$)'), ' ').trim();
  }
}

HTMLElement.prototype.toggleClass = function(string) {
  if (string) {
    if (new RegExp('(\\s+|^)' + string + '(\\s+|$)').test(this.className)) {
      this.className = this.className.replace(new RegExp('(\\s+|^)' + string + '(\\s+|$)'), ' ').trim();
    } else {
      this.className = this.className.trim() + ' ' + string;
    }
  }
}

HTMLElement.prototype.hasClass = function(string) {
  return string && new RegExp('(\\s+|^)' + string + '(\\s+|$)').test(this.className);
}
document.getElementById('yourElementId').onclick = function() {
  this.toggleClass('active');
}
function addClass(el, cn) {
    var c0 = (" " + el.className + " ").replace(/\s+/g, " "),
        c1 = (" " + cn + " ").replace(/\s+/g, " ");
    if (c0.indexOf(c1) < 0) {
        el.className = (c0 + c1).replace(/\s+/g, " ").replace(/^ | $/g, "");
    }
}

function delClass(el, cn) {
    var c0 = (" " + el.className + " ").replace(/\s+/g, " "),
        c1 = (" " + cn + " ").replace(/\s+/g, " ");
    if (c0.indexOf(c1) >= 0) {
        el.className = c0.replace(c1, " ").replace(/\s+/g, " ").replace(/^ | $/g, "");
    }
}
function inArray(val, ary){
  for(var i=0,l=ary.length; i<l; i++){
    if(ary[i] === val){
      return true;
    }
  }
  return false;
}
function removeClassName(classNameS, fromElement){
  var x = classNameS.split(/\s/), s = fromElement.className.split(/\s/), r = [];
  for(var i=0,l=s.length; i<l; i++){
    if(!iA(s[i], x))r.push(s[i]);
  }
  fromElement.className = r.join(' ');
}
function addClassName(classNameS, toElement){
  var s = toElement.className.split(/\s/);
  s.push(c); toElement.className = s.join(' ');
}
// If newState is provided add/remove theClass accordingly, otherwise toggle theClass
function toggleClass(elem, theClass, newState) {
    var matchRegExp = new RegExp('(?:^|\\s)' + theClass + '(?!\\S)', 'g');
    var add=(arguments.length>2 ? newState : (elem.className.match(matchRegExp) == null));

    elem.className=elem.className.replace(matchRegExp, ''); // clear all
    if (add) elem.className += ' ' + theClass;
}
//simple javascript utils for class management in ES6
var classUtil = {

  addClass: (id, cl) => {
    document.getElementById(id).classList.add(cl);
  },

  removeClass: (id, cl) => {
    document.getElementById(id).classList.remove(cl);
  },

  hasClass: (id, cl) => {
    return document.getElementById(id).classList.contains(cl);
  },

  toggleClass: (id, cl) => {
    document.getElementById(id).classList.toggle(cl);
  }

}
classUtil.addClass('myId', 'myClass');
classUtil.removeClass('myId', 'myClass');
classUtil.hasClass('myId', 'myClass');
classUtil.toggleClass('myId', 'myClass');
document.getElementById('id').className = 'class'
document.getElementById('id').classList.add('class');
document.getElementById('id').classList.remove('class');
element.className='second'
// Get the Element
const el = document.querySelector('#element');

// Add CSS property 
el.style.margintop = "0px"
el.style.margintop = "25px" // This would add a 25px to the top of the element.
// Get the Element
const el = document.querySelector('#element');

// Remove class-b style from the element
el.classList.remove("class-b")

// Get the Element
const el = document.querySelector('#element');

// Add class-b style from the element
el.classList.add("class-c")

function classed(el, class_name, add_class) {
  const re = new RegExp("(?:^|\\s)" + class_name + "(?!\\S)", "g");
  if (add_class && !el.className.match(re)) el.className += " " + class_name
  else if (!add_class) el.className = el.className.replace(re, '');
}
classed(document.getElementById("denis"), "active", true)
classed(document.getElementById("denis"), "active", false)
<!DOCTYPE html>
<html>
<head>
<title>How to change class of an HTML element in Javascript?</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<h1 align="center"><i class="fa fa-home" id="icon"></i></h1><br />

<center><button id="change-class">Change Class</button></center>

<script>
var change_class=document.getElementById("change-class");
change_class.onclick=function()
{
    var icon=document.getElementById("icon");
    icon.className="fa fa-gear";
}

</script>
</body>
</html>