Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 jQuery多行多功能,如何管理?_Javascript_Jquery_Arrays_Ajax_Getjson - Fatal编程技术网

Javascript jQuery多行多功能,如何管理?

Javascript jQuery多行多功能,如何管理?,javascript,jquery,arrays,ajax,getjson,Javascript,Jquery,Arrays,Ajax,Getjson,我有以下代码: 或者可能是带有ID的: 另一种尝试: 还有一个(代码如下:): 在任何情况下,ID都是相同的 我的html: <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-1.11.3.js"></script> <meta charset="utf-8"> <meta name="viewport" cont

我有以下代码:

或者可能是带有ID的:

另一种尝试:

还有一个(代码如下:):

在任何情况下,ID都是相同的

我的html

<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <br><br><br>

<button id="btnTest">Test many!</button>
<br><br><br>
<form id="formTest">

  <table>
    <thead>
    <tr>
      <th>Code</td>
    <th>Name</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <input type="text" name="anumber" id="anumber">
      </td>
      <td>
        <input type="text" name="name" id="name">
      </td>
    </tr>
  </tbody>
  </table>


</form>

<button type="button" id="btnAdd">Add</button>

</body>
</html>
jQuery(document).ready(function() {

    jQuery("#btnTest").click(function() {
        for (var i = 0; i < 10; i++) {
            console.log("Test: " + i);
            jQuery("#formTest tbody tr").last().find("input[name*='anumber']").val('243');
            jQuery('#btnAdd').click();
        }
    });


    jQuery("#btnAdd").click(function(e) {
        lastR = $("#formTest tbody tr").last();
        jQuery(lastR).clone().appendTo('#formTest tbody');
      readFnc(lastR);
    });

    function readFnc(lastR) {
      rowCode = $(lastR).find("input[name='anumber']");
      rowName = $(lastR).find("input[name='name']");
      var jqxhr = $.getJSON('http://beta.json-generator.com/api/json/get/41Lpsgmsx', function(data) {
       })
      .fail( function() {
        console.log("Error");
      })
      .done( function(data) {
        console.log("Goo!");
        rowCode.val(data.code);
        rowName.val(data.name);
        $(lastR).css({"background-color": "#99ff99"});
      });
    }

});

JS-Bin



测试很多!


代码 名称 添加
和我的Javascript

<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <br><br><br>

<button id="btnTest">Test many!</button>
<br><br><br>
<form id="formTest">

  <table>
    <thead>
    <tr>
      <th>Code</td>
    <th>Name</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <input type="text" name="anumber" id="anumber">
      </td>
      <td>
        <input type="text" name="name" id="name">
      </td>
    </tr>
  </tbody>
  </table>


</form>

<button type="button" id="btnAdd">Add</button>

</body>
</html>
jQuery(document).ready(function() {

    jQuery("#btnTest").click(function() {
        for (var i = 0; i < 10; i++) {
            console.log("Test: " + i);
            jQuery("#formTest tbody tr").last().find("input[name*='anumber']").val('243');
            jQuery('#btnAdd').click();
        }
    });


    jQuery("#btnAdd").click(function(e) {
        lastR = $("#formTest tbody tr").last();
        jQuery(lastR).clone().appendTo('#formTest tbody');
      readFnc(lastR);
    });

    function readFnc(lastR) {
      rowCode = $(lastR).find("input[name='anumber']");
      rowName = $(lastR).find("input[name='name']");
      var jqxhr = $.getJSON('http://beta.json-generator.com/api/json/get/41Lpsgmsx', function(data) {
       })
      .fail( function() {
        console.log("Error");
      })
      .done( function(data) {
        console.log("Goo!");
        rowCode.val(data.code);
        rowName.val(data.name);
        $(lastR).css({"background-color": "#99ff99"});
      });
    }

});
jQuery(文档).ready(函数(){
jQuery(“#btnTest”)。单击(函数(){
对于(变量i=0;i<10;i++){
控制台日志(“测试:+i”);
jQuery(“#formTest tbody tr”).last().find(“输入[name*='anumber']”)val('243');
jQuery(“#btnAdd”)。单击();
}
});
jQuery(“#btnAdd”)。单击(函数(e){
lastR=$(“#formTest tbody tr”).last();
jQuery(lastR.clone().appendTo(“#formTest tbody”);
readFnc(lastR);
});
函数readFnc(lastR){
rowCode=$(lastR).find(“输入[name='anumber']”);
rowName=$(lastR).find(“输入[name='name']”);
var jqxhr=$.getJSON('http://beta.json-generator.com/api/json/get/41Lpsgmsx,函数(数据){
})
.fail(函数(){
控制台日志(“错误”);
})
.完成(功能(数据){
console.log(“咕!”);
行代码.val(数据.code);
rowName.val(data.name);
$(lastR.css({“背景色”:“#99ff99”});
});
}
});
现在我需要用每个getJSON的不同值更新每一行。如何管理许多ajax调用,或者更抽象地说,管理许多函数

我需要在服务器重新发送时更新表单。就在那时


如果我为每个tr分配了一个ID,那么在每个“添加”上单击函数变量被覆盖。如何操作?

getJSON是异步的,因此脚本创建10行,然后使用last()选择器解析getJSON承诺,只将值分配给创建的最后一行。为了避免此问题,可以将克隆对象传递给函数。 为了便于解释,您可以看到callOrder和resolveOrder的顺序不同

  var callORder = 0;

  jQuery("#btnAdd").click(function(e) {
    lastR = $("#formTest tbody tr").last();
    var newRow = jQuery(lastR).clone();
    newRow.appendTo('#formTest tbody');
    readFnc(newRow,++callORder);
  });

  var resolveOrder = 0;

  function readFnc(newR,callORder) {

    var jqxhr = $.getJSON('http://beta.json-generator.com/api/json/get/41Lpsgmsx', function(data) {})
      .fail(function() {
        console.log("Error");
      })
      .done(function(data) {
        console.log("Goo!");
        rowCode = newR.find("input[name='anumber']");
        rowName = newR.find("input[name='name']");
        rowCode.val(data.code + " " + (++resolveOrder)+ " " + (callORder));
        rowName.val(data.name);
        newR.css({
          "background-color": "#99ff99"
        });
      });
  }
jQuery(文档).ready(函数(){
jQuery(“#btnTest”)。单击(函数(){
对于(变量i=0;i<10;i++){
控制台日志(“测试:+i”);
jQuery(“#formTest tbody tr”).last().find(“输入[name*='anumber']”)val('243');
jQuery(“#btnAdd”)。单击();
}
});
var callORder=0;
jQuery(“#btnAdd”)。单击(函数(e){
lastR=$(“#formTest tbody tr”).last();
var newRow=jQuery(lastR.clone();
newRow.appendTo(“#formTest tbody”);
readFnc(newRow,++callORder);
});
var resolveOrder=0;
函数readFnc(newR、callORder){
var jqxhr=$.getJSON('http://beta.json-generator.com/api/json/get/41Lpsgmsx,函数(数据){})
.fail(函数(){
控制台日志(“错误”);
})
.完成(功能(数据){
console.log(“咕!”);
rowCode=newR.find(“输入[name='anumber']”);
rowName=newR.find(“输入[name='name']”);
val(data.code++(+++resolveOrder)+++(callORder));
rowName.val(data.name);
newR.css({
“背景色”:“#99ff99”
});
});
}
});

JS-Bin



测试很多!


代码 名称 添加
亲爱的@Vanojx1,您的代码很漂亮,非常感谢,但我需要立即创建新行,因为我需要立即另一个输入来写入并放入队列。我不能等待执行所有getjson,然后再次写入并将新行添加到“队列”。这才是真正的问题。我能给函数传递一个ID吗?TR的ID如本例所示:也许这个答案可以帮助我们?对不起,我不知道istant的创建是真正的问题。我已经编辑了我的答案,希望现在它能解决你的问题