Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新选择不工作的李_Javascript_Css - Fatal编程技术网

Javascript 重新选择不工作的李

Javascript 重新选择不工作的李,javascript,css,Javascript,Css,我有一张lis的清单。如果选择了某个li,则其背景色将为橙色,而之前的“选定”li的背景色将被删除 问题是,如果选择同一个li 3次,什么也不会发生。第一次,它的背景颜色是橙色。第二次,背景色将被删除。第三次,背景颜色应该是橙色,但不是。什么也没发生 如何使橙色在第三次选中时重新出现,并在每次选中后都具有“正常”行为 严格使用 var parentElem=document.getElementById'wrapper', 单元格=parentElem.firstElementChild.ch

我有一张lis的清单。如果选择了某个li,则其背景色将为橙色,而之前的“选定”li的背景色将被删除

问题是,如果选择同一个li 3次,什么也不会发生。第一次,它的背景颜色是橙色。第二次,背景色将被删除。第三次,背景颜色应该是橙色,但不是。什么也没发生

如何使橙色在第三次选中时重新出现,并在每次选中后都具有“正常”行为

严格使用 var parentElem=document.getElementById'wrapper', 单元格=parentElem.firstElementChild.children, previousColorNameSelection=parentElem.children[0]; parentElem.firstElementChild.addEventListener'click',函数E{ var电流目标; 如果e.target.tagName=='LI'{ currentTarget=e.target.firstElementChild.firstElementChild; }否则如果hasClasse.target为'namesInnerWrapper'{ currentTarget=e.target.firstElementChild; }否则如果hasClasse.target为'namesName'{ currentTarget=e.target; } console.logcurrentTarget.innerHTML,currentTarget; currentTarget.parentElement.parentElement.style.backgroundColor='orange'; previousColorNameSelection.parentElement.parentElement.style.backgroundColor=; previousColorNameSelection=currentTarget; }; 函数HASSCLASSELE,cls{ 返回ele.className.matchnew RegExp'\\s |^'+cls+'\\s |$'; } 包装纸{ 宽度:300px; } 李:第N个孩子{ 背景:RGBA100200255,0.1; } 李{ 列表样式类型:无; } 保险商实验室{ 位置:相对位置; 高度:350px; } 平衡 预先知道 巴伦支 不足 非物质化 非贷方 无校正
我将用jQuery为您提供一个答案,因为这样更简单

让我们首先使用一个类来指定背景色。更容易相处

li.active{
  background-color: orange;
}
然后让我们像这样使用jQuery:

$function{ $'li'。单击,函数{ //保存是否已选择要单击的li var alreadySelected=$this.hasClass'active'?true:false; //从所有列表项中删除活动类 $'li'。删除类'active'; //如果尚未选择,请立即选择 如果!已选择$this.addClass'active'; }; };
previousColorNameSelection=currentTarget–问题是,每次单击都会执行此操作,无论它是激活还是禁用LI元素。因此,当LI处于活动状态时,您可以将其设置为previousColorNameSelection,然后单击下一步,将元素的背景设置为橙色,然后立即将其删除,因为previousColorNameSelection已经指向同一LI元素。啊。那我该怎么解决呢?谢谢!你可以发布一个JavaScript答案吗。另外,我没有将事件添加到lis的原因是,我将有大约150个lis,因此我认为将事件添加到ul更有效