Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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_Html - Fatal编程技术网

Javascript 更改<;李>;元素

Javascript 更改<;李>;元素,javascript,html,Javascript,Html,我是javascript新手。我想在单击元素时将其背景从白色更改为红色。单击另一个元素后,希望将此元素转换为红色,并将其余元素更改为白色。我成功了,但最后一次没有受到影响 函数func(li){ var x=document.querySelectorAll(“li”); var i; 对于(i=0;i

我是javascript新手。我想在单击
  • 元素时将其背景从白色更改为红色。单击另一个
  • 元素后,希望将此元素转换为红色,并将其余元素更改为白色。我成功了,但最后一次没有受到影响

    函数func(li){
    var x=document.querySelectorAll(“li”);
    var i;
    对于(i=0;i
      比林奇
    • ikinci
    • ucuncu
    • dorduncu

    我只需执行此操作,无需进行条件检查,只需从所有li中删除红色背景,并在单击li对象时放置红色背景即可

    函数func(li){
    var x=document.querySelectorAll(“li”);
    var i;
    对于(i=0;i
      比林奇
    • ikinci
    • ucuncu
    • dorduncu
    试试这个版本

  • 使用事件侦听器
  • 听任何点击UL而不是每个li的声音
  • 不引人注目(不使用内联事件处理程序)
  • window.addEventListener(“加载”,函数(){//on page load
    document.querySelector(“ul”).addEventListener(“单击”,函数(e){//单击ul
    var clickedObject=e.target;
    如果(clickedObject.tagName==“LI”){//它是LI吗
    document.queryselectoral(“.reng”).forEach(函数(li){//reset all
    li.style.backgroundColor=“白色”;
    });
    clickedObject.style.backgroundColor=“红色”//为单击的LI着色
    }
    })
    })
      比林奇 伊坎奇 ucuncu
    • dorduncu

    使用
    querySelectorAll
    将所有li设置为白色,然后将单击的li设置为红色

    函数func(li){
    var a=document.querySelectorAll('li');
    a、 forEach((e)=>e.style.backgroundColor=“白色”)
    li.style.backgroundColor=“红色”;
    }
      比林奇
    • ikinci
    • ucuncu
    • dorduncu
    函数func(li){
    var x=document.querySelectorAll(“li”);
    var i;
    对于(i=0;i
      比林奇
    • ikinci
    • ucuncu
    • dorduncu

    这段代码写得不好

    var x = document.querySelectorAll("li");
      var i;
    // we iterate over all LI elements
      for (i = 0; i < x.length; i++) {
          if(x[i].style.backgroundColor == "red"){
          x[i].style.backgroundColor = "white";
          console.log('W');
          }
    // if given by index LI element backgroundColor is not "red" 
    // then LI clicked element backgroundColor is set to "red"
    // so at first if you click on ANY (including LAST) element 
    // from list the LAST element property is at first set to "red" 
    // - which is not visible because in next 
    // for(..) iteration this LAST element is set to 'white' !!!
    // etc etc
         else {
            li.style.backgroundColor = "red";
            console.log('W');
    }
    
    var x=document.querySelectorAll(“li”);
    var i;
    //我们迭代所有LI元素
    对于(i=0;i
    如果(li.style.backgroundColor==“white”)
    始终正确,则不建议使用内联事件处理程序。我认为这与您正在搜索的相同。[@Omikabira not taged jQueryGreat!谢谢!