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更改元素的类
您可以尝试使用nodeattributes
属性来保持与旧浏览器的兼容性,即使是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>