Javascript停止输入多个类名

Javascript停止输入多个类名,javascript,jquery,html,Javascript,Jquery,Html,在这里,我对JavaScript有一个简单的问题。我有这个JS代码,我用它来突出显示价格表中的行。问题是,如果一次使用多个类名,它将停止工作。例如: 悬停在此模式下不起作用 Hover在这种情况下不起作用 JS: var classes = ["el1", "el2", "el3", "el4", "el5", "el6", "el7", "el8", "el9","el10","el11","el12", "el13","el14","el15","el16","el17","el18","e

在这里,我对JavaScript有一个简单的问题。我有这个JS代码,我用它来突出显示价格表中的行。问题是,如果一次使用多个类名,它将停止工作。例如:

悬停在此模式下不起作用

Hover在这种情况下不起作用

JS:

var classes = ["el1", "el2", "el3", "el4", "el5", "el6", "el7", "el8", "el9","el10","el11","el12", "el13","el14","el15","el16","el17","el18","el19","el20","el21","el22", "el23", "el24","el25" ]; //list of your classes
var elms = {};
var n = {}, nclasses = classes.length;
function changeColor(classname, color) {
    var curN = n[classname];
    for(var i = 0; i < curN; i ++) {
        elms[classname][i].style.backgroundColor = color;
    }
}
for(var k = 0; k < nclasses; k ++) {
    var curClass = classes[k];
    elms[curClass] = document.getElementsByClassName(curClass);
    n[curClass] = elms[curClass].length;
    var curN = n[curClass];
    for(var i = 0; i < curN; i ++) {
        elms[curClass][i].onmouseover = function() {
            changeColor(this.className, "#dbdbdb");
        };
        elms[curClass][i].onmouseout = function() {
            changeColor(this.className, "transparent");
        };
    }
};
var类=[“el1”、“el2”、“el3”、“el4”、“el5”、“el6”、“el7”、“el8”、“el9”、“el10”、“el11”、“el12”、“el13”、“el14”、“el15”、“el16”、“el17”、“el18”、“el19”、“el20”、“el21”、“el22”、“el23”、“el24”、“el25”]//你的班级名单
var-elms={};
var n={},nclasses=classes.length;
函数changeColor(类名、颜色){
var curN=n[classname];
对于(变量i=0;i
谁能帮帮我吗,我是JS的新手

谢谢..

var类=[“el1”、“el2”、“el3”、“el4”、“el5”、“el6”、“el7”、“el8”、“el9”、“el10”、“el11”、“el12”、“el13”、“el14”、“el15”、“el16”、“el17”、“el18”、“el19”、“el20”、“el21”、“el22”、“el23”、“el24”、“el25”]//你的班级名单
var-elms={};
var n={},nclasses=classes.length;
函数changeColor(类名、颜色){
var curN=n[classname];
对于(变量i=0;i
Hover在这种情况下不起作用







Hover在这个
中起作用,dom元素上的
className
属性返回完整的类名;也就是说,如果某个元素有多个类(例如
),则
className=“herp derp”

如果要对这些多个类中的每个类调用
changeColor
,请尝试以下操作:

// first, change the order of the arguments on the changeColor function so we can pre-apply the color argument
function changeColor(color, classname) {
    var curN = n[classname];
    for(var i = 0; i < curN; i ++) {
        elms[classname][i].style.backgroundColor = color;
    }
}

看看我做的小提琴。问题是,当您尝试更改颜色时,您再次传入类名并尝试再次选择元素,而您已经拥有对要更改背景颜色的元素的引用。因此,直接传递元素并更改背景

`

var n={},nclasses=classes.length;
功能更改颜色(elm,颜色){
elm.style.backgroundColor=颜色;
}
对于(var k=0;k

`

@Fahad你需要这样的东西吗?还有其他方法吗?如果不使用类,我可以使用ID吗?没有类就可以了,我想问题在于您的
changecolor
only@Justcode这里是jsfiddle:@FahadSohail我认为Kartikeya有一个正确的建议我已经尝试实现了这一点,代码现在只选择行的第一个元素,而不是整行..更改为split(“”)[0]@FahadSohail kartikeyan是这里的真人
// now, where you previously called changeColor, do something like this
this.className.split(" ").forEach(changeColor.bind(null, "transparent"));
// we now will call changeColor on all of the classes of this with the appropriate color ("transparent" or "#dbdbdb")
var n = {}, nclasses = classes.length;
function changeColor(elm, color) {
        elm.style.backgroundColor = color;
}
for(var k = 0; k < nclasses; k ++) {
    var curClass = classes[k];
    elms[curClass] = document.getElementsByClassName(curClass);
    console.log(elms[curClass]);
    console.log(curClass);
    n[curClass] = elms[curClass].length;
    var curN = n[curClass];
    for(var i = 0; i < curN; i ++) {
        console.log(elms[curClass][i]);
        elms[curClass][i].onmouseover = function() {
            changeColor(this, "#dbdbdb");
        };
        elms[curClass][i].onmouseout = function() {
            changeColor(this, "transparent");
        };
    }
};