Javascript停止输入多个类名
在这里,我对JavaScript有一个简单的问题。我有这个JS代码,我用它来突出显示价格表中的行。问题是,如果一次使用多个类名,它将停止工作。例如: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
悬停在此模式下不起作用
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");
};
}
};