Javascript 事件处理程序在循环中工作不正常
我试图通过foor循环将一些类应用于html元素。问题是循环变量不能正常工作Javascript 事件处理程序在循环中工作不正常,javascript,css,Javascript,Css,我试图通过foor循环将一些类应用于html元素。问题是循环变量不能正常工作 “严格使用” window.onload=函数(){ var elements=document.getElementsByTagName(“div”) 对于(var i=0;i
“严格使用”
window.onload=函数(){
var elements=document.getElementsByTagName(“div”)
对于(var i=0;i
div{
背景色:红色;
}
.0级{
背景颜色:蓝色;
}
.1级{
背景颜色:紫色;
}
正如@Patrick建议的那样:
window.onload = function(){
var elements = document.getElementsByTagName("div")
for(var i = 0; i < elements.length; i++){
elements[i].addEventListener("click", a.bind(window, elements[i],i), false)
}
function a(e, x){
if(!e.className){
e.className = "class".concat(x)
}
else {
e.classList.remove(e.className)
}
}
}
window.onload=function(){
var elements=document.getElementsByTagName(“div”)
对于(var i=0;i
您正在调用函数a并将其结果指定为事件处理程序
使用bind,您可以创建一个函数,该函数将调用
a
作为参数传递元素和索引。如@Patrick所建议的,执行以下操作:
window.onload = function(){
var elements = document.getElementsByTagName("div")
for(var i = 0; i < elements.length; i++){
elements[i].addEventListener("click", a.bind(window, elements[i],i), false)
}
function a(e, x){
if(!e.className){
e.className = "class".concat(x)
}
else {
e.classList.remove(e.className)
}
}
}
window.onload=function(){
var elements=document.getElementsByTagName(“div”)
对于(var i=0;i
您正在调用函数a并将其结果指定为事件处理程序
使用bind,您可以创建一个调用
a
作为参数传递元素和索引的函数。您有a(this,i)
,this
是窗口
全局对象而不是元素我是否删除了它,只是放了“i”?我想您的意思是做类似a.bind(elements[i],i)的事情
我想通过在函数中使用循环变量将类添加到元素中,如果您只执行,bind方法会出现以下错误“无法在数字“1”上创建属性“className”。addEventListener(“单击”,a,false)
并在函数中使用this
,然后停止向类添加索引,然后添加一个公共字符串,这会变得容易得多。另外,字符串也不会连接。你有a(this,i)
,this
是窗口
全局对象不是元素我是否要删除它并放上“i”?我想你的意思是做类似a.bind(elements[i],i)
的事情,我想通过在函数中使用循环变量向元素添加类,bind方法给了我一个错误“无法在数字“1”上创建属性'className',如果你只是。addEventListener(“click”,a,false)
并在函数中使用this
,停止向类添加索引,而是添加一个公共字符串,这会变得容易得多。而且,字符串不会连接。