Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 for/in循环是否会在循环后退出函数?_Javascript - Fatal编程技术网

Javascript for/in循环是否会在循环后退出函数?

Javascript for/in循环是否会在循环后退出函数?,javascript,Javascript,在我看来,在for/in循环之后,我的函数结束了 My toggle()从不显示“toggle routine done!”,显然它不会运行tempstoreonChangeMartificial() 但是它在for/in循环中做一些事情 为什么? 您正在尝试使用中的从HTMLCollection获取元素 使用覆盖层的覆盖层 资源 您正在尝试使用中的从HTMLCollection获取元素 使用覆盖层的覆盖层 资源 我不知道您可以在文档上迭代。getElementByClas

在我看来,在for/in循环之后,我的函数结束了

My toggle()从不显示“toggle routine done!”,显然它不会运行tempstoreonChangeMartificial()

但是它在for/in循环中做一些事情

为什么?

  • 您正在尝试使用中的
    HTMLCollection
    获取元素
  • 使用覆盖层的覆盖层

资源
      • 您正在尝试使用中的
        HTMLCollection
        获取元素
      • 使用覆盖层的覆盖层

      资源

      我不知道您可以在
      文档上迭代。getElementByClassName
      使用
      for in
      也许这就是问题所在,您可能希望在HTMLCollection上迭代,如下所示:

      function toggle() {
          overlays = document.getElementsByClassName("overlay");
      
          if (globalOpacityValue == 0.9){
              globalOpacityValue = 0;
          }else{
              globalOpacityValue = 0.9;
          }
          console.log("globalOpacityValue: " + globalOpacityValue);
      
          for (overlay of overlays) {
              overlay.style.opacity = globalOpacityValue;
          }
          console.log("toggle routine done!");
      
          tempStoreOnChangeArtificial();
          console.log("tempStoreOnChangeArtificial done!");
      }
      

      我不知道您可以使用中的
      for
      迭代
      document.getElementByClassName
      也许这就是问题所在,您可能希望迭代HTMLCollection,如下所示:

      function toggle() {
          overlays = document.getElementsByClassName("overlay");
      
          if (globalOpacityValue == 0.9){
              globalOpacityValue = 0;
          }else{
              globalOpacityValue = 0.9;
          }
          console.log("globalOpacityValue: " + globalOpacityValue);
      
          for (overlay of overlays) {
              overlay.style.opacity = globalOpacityValue;
          }
          console.log("toggle routine done!");
      
          tempStoreOnChangeArtificial();
          console.log("tempStoreOnChangeArtificial done!");
      }
      
      返回类似于数组的对象,该对象不可与

      函数切换(){
      var overlays=document.getElementsByClassName(“overlays”),
      我
      if(全局容量值==0.9){
      全局容量值=0;
      }否则{
      全局容量值=0.9;
      }
      log(“globalOpacityValue:+globalOpacityValue”);
      对于(i=0;i
      
      a
      B
      c
      返回一个类似数组的对象,该对象不能与

      函数切换(){
      var overlays=document.getElementsByClassName(“overlays”),
      我
      if(全局容量值==0.9){
      全局容量值=0;
      }否则{
      全局容量值=0.9;
      }
      log(“globalOpacityValue:+globalOpacityValue”);
      对于(i=0;i
      
      a
      B
      
      c
      可能您遇到了错误。请共享您的for循环可能无法正常运行的消息。在
      overlays[overlay].style.opacity=globalOpacityValue,则有可能
      覆盖[overlay]
      未定义的
      。然后您试图访问
      undefined
      style
      属性,这将抛出一个错误。那么for/in循环通常不会结束一个函数?如果是这样的话,我应该运行我的其他代码。帕特里克·迈克尔森:不,for/in循环中的事情正在完成。但是是的,控制台总是说它不能访问未定义的样式。但它仍然会正常改变样式,所以我不在乎你可能会出错。请共享您的for循环可能无法正常运行的消息。在
      overlays[overlay].style.opacity=globalOpacityValue,则有可能
      覆盖[overlay]
      未定义的
      。然后您试图访问
      undefined
      style
      属性,这将抛出一个错误。那么for/in循环通常不会结束一个函数?如果是这样的话,我应该运行我的其他代码。帕特里克·迈克尔森:不,for/in循环中的事情正在完成。但是是的,控制台总是说它不能访问未定义的样式。但它还是会改变风格,所以我不在乎
      function toggle() {
          overlays = document.getElementsByClassName("overlay");
      
          if (globalOpacityValue == 0.9){
              globalOpacityValue = 0;
          }else{
              globalOpacityValue = 0.9;
          }
          console.log("globalOpacityValue: " + globalOpacityValue);
      
          Array.prototype.forEach.call(overlays, function(overlay) {
              overlay.style.opacity = globalOpacityValue;
          });
      
          console.log("toggle routine done!");
      
          tempStoreOnChangeArtificial();
          console.log("tempStoreOnChangeArtificial done!");
      }