Javascript while循环中的函数

Javascript while循环中的函数,javascript,jquery,json,Javascript,Jquery,Json,我想做的是通过点击按钮来获取特定textarea标签的内容,所以我认为循环可以解决这个问题。PHP上的while循环的作用是使textarea的名称不同,并使button的onclick触发器不同。但是javascript中的循环不起作用。请任何人帮助什么是正确的一个来完成我的任务??抱歉英语不好…提前谢谢 <html> <head> <script> var i = 0; while(i < 2000)

我想做的是通过点击按钮来获取特定textarea标签的内容,所以我认为循环可以解决这个问题。PHP上的while循环的作用是使textarea的名称不同,并使button的onclick触发器不同。但是javascript中的循环不起作用。请任何人帮助什么是正确的一个来完成我的任务??抱歉英语不好…提前谢谢

    <html>
    <head>
    <script>

    var i = 0;

    while(i < 2000)
    {
        i++;

        function feedbacks+i()
        {
         var feed = document.getElementsByName("feedback"+i)[0].value;
         alert(feed);
        }
    }

    </script>
    </head>

    <body>

    <?php

    while($i < 2000)

    $i++;
    echo "<textarea name='feedback$i' >you post</textarea>";
    echo "<button onclick='feedbacks$i()' >send feedback</button>";

    ?>

    </body>
    </html>

var i=0;
而(i<2000)
{
i++;
函数反馈+i()
{
var feed=document.getElementsByName(“反馈”+i)[0]。值;
警报(feed);
}
}

我不确定你的问题是否正确,但是为什么不编写一个javascript函数并将索引作为参数传递呢? 比如:


我不确定你的问题是否正确,但是为什么不编写一个javascript函数并将索引作为参数传递呢? 比如:


我不确定你的问题是否正确,但是为什么不编写一个javascript函数并将索引作为参数传递呢? 比如:


我不确定你的问题是否正确,但是为什么不编写一个javascript函数并将索引作为参数传递呢? 比如:


您的代码不正确,因为您已经用Jquery标记了您的问题,我想建议以下解决方案

$(document).ready(function(){
   $(document).on('click','button',function(){
     alert($(this).prev('textarea').val())
   });
});
您正在运行时创建这些元素
textarea
按钮
,因此您必须使用委派来注册这些按钮的单击事件。此外,您还必须将代码包装在
.ready()
函数中,这意味着您必须在DOM准备就绪后才能对其进行操作

请看这里的参考资料

  • (代表团)

您的代码不正确,因为您用Jquery标记了您的问题,我建议您采用以下解决方案:

$(document).ready(function(){
   $(document).on('click','button',function(){
     alert($(this).prev('textarea').val())
   });
});
您正在运行时创建这些元素
textarea
按钮
,因此您必须使用委派来注册这些按钮的单击事件。此外,您还必须将代码包装在
.ready()
函数中,这意味着您必须在DOM准备就绪后才能对其进行操作

请看这里的参考资料

  • (代表团)

您的代码不正确,因为您用Jquery标记了您的问题,我建议您采用以下解决方案:

$(document).ready(function(){
   $(document).on('click','button',function(){
     alert($(this).prev('textarea').val())
   });
});
您正在运行时创建这些元素
textarea
按钮
,因此您必须使用委派来注册这些按钮的单击事件。此外,您还必须将代码包装在
.ready()
函数中,这意味着您必须在DOM准备就绪后才能对其进行操作

请看这里的参考资料

  • (代表团)

您的代码不正确,因为您用Jquery标记了您的问题,我建议您采用以下解决方案:

$(document).ready(function(){
   $(document).on('click','button',function(){
     alert($(this).prev('textarea').val())
   });
});
您正在运行时创建这些元素
textarea
按钮
,因此您必须使用委派来注册这些按钮的单击事件。此外,您还必须将代码包装在
.ready()
函数中,这意味着您必须在DOM准备就绪后才能对其进行操作

请看这里的参考资料

  • (代表团)

    • 这里有两个主要问题


      命名函数

      命名函数时,不能使用变量,只能使用单个标识符

      您可以使用一个函数表达式,然后指定一个可以用变量标识的结果。e、 g

      an_array_i_created_earlier[i] = function () {
          // etc etc
      } 
      

      闭包

      您试图在正在创建的函数内部使用
      i
      ,但在该函数运行之前,您正在该函数外部更改它

      你可以通过创建一个新的闭包来解决这个问题

      function createFunction(i) {
          return function () {
             // can use i sanely here because it was passed into a local variable belonging to `createFunction`
          };
      }
      
      an_array_i_created_earlier[i] = createFunction(i);
      

      但这一切都很混乱。您可以完全忘记必须处理
      i
      ,并在处理时扔掉可怕的固有事件属性。而是在DOM中导航以查找元素:

      addEventListener('click', function (evt) {
          var textarea, t = evt.target; 
          if (t.classList.contains('feedback')) {
              textarea = t.previousElementSibling;
              alert(textarea.value);
          }
      });
      

      请注意,这使用了一些最近添加到浏览器DOM中的内容。如果您希望与旧浏览器(特别是IE9和更早版本)兼容,那么您可能需要重写它以添加对遗留方法的支持。像YUI或jQuery这样的库可以帮助解决这一问题。

      这里有两个主要问题


      命名函数

      命名函数时,不能使用变量,只能使用单个标识符

      您可以使用一个函数表达式,然后指定一个可以用变量标识的结果。e、 g

      an_array_i_created_earlier[i] = function () {
          // etc etc
      } 
      

      闭包

      您试图在正在创建的函数内部使用
      i
      ,但在该函数运行之前,您正在该函数外部更改它

      你可以通过创建一个新的闭包来解决这个问题

      function createFunction(i) {
          return function () {
             // can use i sanely here because it was passed into a local variable belonging to `createFunction`
          };
      }
      
      an_array_i_created_earlier[i] = createFunction(i);
      

      但这一切都很混乱。您可以完全忘记必须处理
      i
      ,并在处理时扔掉可怕的固有事件属性。而是在DOM中导航以查找元素:

      addEventListener('click', function (evt) {
          var textarea, t = evt.target; 
          if (t.classList.contains('feedback')) {
              textarea = t.previousElementSibling;
              alert(textarea.value);
          }
      });
      

      请注意,这使用了一些最近添加到浏览器DOM中的内容。如果您希望与旧浏览器(特别是IE9和更早版本)兼容,那么您可能需要重写它以添加对遗留方法的支持。像YUI或jQuery这样的库可以帮助解决这一问题。

      这里有两个主要问题


      命名函数

      命名函数时,不能使用变量,只能使用单个标识符

      您可以使用一个函数表达式,然后指定一个可以用变量标识的结果。e、 g

      an_array_i_created_earlier[i] = function () {
          // etc etc
      } 
      

      闭包

      您正试图在正在创建的函数中使用
      i
      ,但实际上是这样