Javascript 为什么这段代码执行无限循环? $(文档).ready(函数(){ 变量名称=['Hannah'、'Lucy'、'Brenda'、'Lauren'、'Mary']; var=[]; var不喜欢=[]; while(names.length>0){ document.getElementById('demo').innerHTML=names[i]; 函数likeOrDislike(选项){ 如果(选项=='Like') { 喜欢。推送(名称[0]) 名称.拼接(0,1) } else if(选项==“不喜欢”) { 不喜欢。推送(名称[i]) 名称.拼接(0,1) } }; }; });

Javascript 为什么这段代码执行无限循环? $(文档).ready(函数(){ 变量名称=['Hannah'、'Lucy'、'Brenda'、'Lauren'、'Mary']; var=[]; var不喜欢=[]; while(names.length>0){ document.getElementById('demo').innerHTML=names[i]; 函数likeOrDislike(选项){ 如果(选项=='Like') { 喜欢。推送(名称[0]) 名称.拼接(0,1) } else if(选项==“不喜欢”) { 不喜欢。推送(名称[i]) 名称.拼接(0,1) } }; }; });,javascript,arrays,loops,Javascript,Arrays,Loops,我要求while循环继续,直到数组名为空。 然后,我让用户每次都用数组中的名字替换文本。 然后,我要么选择喜欢/不喜欢,然后删除数组的第一个名称,并重复该过程,直到名称数组为空 但是,当我在浏览器中加载时,它不会加载页面,因为我认为它卡在了一个循环中除了注释中指出的未定义的I,您永远不会更改名称 所有针对名称的处理都是在函数中完成的,就像Ordislike()一样,您永远不会调用它 因此,这正在发生: 当存在名称(names>0)时,请执行此存根的内容 。。。就这样。你从不改名 。。。该函数从

我要求while循环继续,直到数组名为空。 然后,我让用户每次都用数组中的名字替换文本。 然后,我要么选择喜欢/不喜欢,然后删除数组的第一个名称,并重复该过程,直到名称数组为空


但是,当我在浏览器中加载时,它不会加载页面,因为我认为它卡在了一个循环中

除了注释中指出的未定义的
I
,您永远不会更改
名称

所有针对
名称的处理都是在函数
中完成的,就像Ordislike()
一样,您永远不会调用它

因此,这正在发生:

  • 当存在名称(
    names>0
    )时,请执行此存根的内容
  • 。。。就这样。你从不改名
  • 。。。该函数从未被调用
也许你想做这样的事情——这只是一个例子,完全假设你想要实现的

  <script>
  $(document).ready(function(){
  var names = ['Hannah', 'Lucy', 'Brenda', 'Lauren', 'Mary'];
  var liked = [];
  var disliked = [];

         while(names.length > 0){

          document.getElementById('demo').innerHTML =  names[i];
          function likeOrDislike(choice){
          if(choice == 'Like')
          {
            liked.push(names[0])
            names.splice(0, 1)
          }
          else if (choice == 'Dislike')
          {
            disliked.push(names[i])
            names.splice(0, 1)
          }

        };
   };
 });
  </script>

除了注释中指出的未定义的
i
,您永远不会更改
名称

所有针对
名称的处理都是在函数
中完成的,就像Ordislike()
一样,您永远不会调用它

因此,这正在发生:

  • 当存在名称(
    names>0
    )时,请执行此存根的内容
  • 。。。就这样。你从不改名
  • 。。。该函数从未被调用
也许你想做这样的事情——这只是一个例子,完全假设你想要实现的

  <script>
  $(document).ready(function(){
  var names = ['Hannah', 'Lucy', 'Brenda', 'Lauren', 'Mary'];
  var liked = [];
  var disliked = [];

         while(names.length > 0){

          document.getElementById('demo').innerHTML =  names[i];
          function likeOrDislike(choice){
          if(choice == 'Like')
          {
            liked.push(names[0])
            names.splice(0, 1)
          }
          else if (choice == 'Dislike')
          {
            disliked.push(names[i])
            names.splice(0, 1)
          }

        };
   };
 });
  </script>

您需要检查控制台是否有错误。它会立即告诉您,
i未定义
。最重要的是,您正在循环中定义函数,这是一个非常糟糕的想法。您需要检查控制台是否有错误。它会立即告诉您,
i未定义
。最重要的是,在循环中定义函数,这是一个非常糟糕的主意