【问题标题】:For loop <p> tag in jqueryjquery中的for循环<p>标签
【发布时间】:2018-02-04 11:03:14
【问题描述】:

我需要使用 jQuery 循环。有时我的查询返回多行,所以我想检查查询是否返回多行。我想查看p 标签中的所有输出(一个接一个)。我写了我的代码,它只给出了我查询的最后一行。如何返回 &lt;p&gt; 标签中的所有行?我的代码有什么错误?

 <p id="prodDeccarea"> </p> 
$("#slsNo").keyup(function () {
    $("#hsCode").val(null);
    $("#slsiUnit").val(null);
    var slsNo = $("#slsNo").val();
    $.ajax({
        type: 'GET',
        url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
        success: function (result) {
            var jString = JSON.stringify(result);
            var jdata = JSON.parse(jString);
            for (var x = 0; x < jdata.length; x++) {
                if (1 < jdata.length) {
                    var td1 = jdata[x].itemDesc;
                    var td2 = jdata[x].hsCode;
                    var td3 = jdata[x].slsiUnit;
                    $("#prodDeccarea").html("Your product catagory is " + jdata[x].itemDesc + ".");

                } else {
                    var td1 = jdata[x].itemDesc;
                    var td2 = jdata[x].hsCode;
                    var td3 = jdata[x].slsiUnit;
                    $("#hsCode").val(td2);
                    $("#prodDeccarea").html("Your product catagory is " + td1 + ".");
                    if (td3 == "1") {
                        $("#slsiUnit").val("UNIT1");
                    }
                    if (td3 == "2") {
                        $("#slsiUnit").val("UNIT2");
                    }
                    if (td3 == "3") {
                        $("#slsiUnit").val("UNIT3");
                    }
                    if (td3 == "4") {
                        $("#slsiUnit").val("UNIT4");
                    }
                    if (td3 == "5") {
                        $("#slsiUnit").val("UNIT5");
                    }
                    if (td3 == "6") {
                        $("#slsiUnit").val("UNIT6");
                    }
                }
            }
        }
    }
    );
});

【问题讨论】:

  • 序列化和立即反序列化对象(var jString = JSON.stringify(result); var jdata = JSON.parse(jString);)的原因是什么?
  • 啊...我用它不影响任何东西...我会删除它...如果可以请给我一些答案...
  • 试试 $("#prodDeccarea").append("

    您的产品类别是 " + jdata[x].itemDesc + ".

    ");
  • @angel.bonev ...绳子效果很好。
  • @vidarshana 不客气

标签: javascript jquery html ajax loops


【解决方案1】:

您的代码中有一些问题

让我们分析一下:-)

for-loop 中的数组jdata 的长度=== 1 时,您正在使用一个条件。将该逻辑从for-loop 移出。

for (var x = 0; x < jdata.length; x++) {
    if (1 < jdata.length) { 
    ^

您正在覆盖您之前调用的函数 .html(...) 的内容。因此,您将丢失以前的 HTML。

$("#prodDeccarea").html("Your product catagory is " + td1 + ".");
                       ^

你正在对一个已经是 JSON 的字符串进行字符串化,只需解析它。

var jString = JSON.stringify(result);
                   ^

你有多个条件可以根据 tdr3 的值设置一个值。只需使用该值并将其设置为元素。即:$("#slsiUnit").val("UNIT" + td3);

if (td3 == "1") { <- Here
    $("#slsiUnit").val("UNIT1");
} 
if (td3 == "2") { <- Here, and so on
    $("#slsiUnit").val("UNIT2");
}

看看这段代码 sn-p 与那些修复

$("#slsNo").keyup(function() {
  $("#hsCode").val(null);
  $("#slsiUnit").val(null);
  var slsNo = $("#slsNo").val();
  $.ajax({
    type: 'GET',
    url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
    success: function(result) {
      var jString = JSON.stringify(result);
      var jdata = JSON.parse(jString);

      if (jdata.length === 1) {
        var td1 = jdata[0].itemDesc;
        var td2 = jdata[0].hsCode;
        var td3 = jdata[0].slsiUnit;
        $("#hsCode").val(td2);
        $("#prodDeccarea").html("Your product catagory is " + td1 + ".");
        $("#slsiUnit").val("UNIT" + td3);
        
        return;
      }

      for (var x = 0; x < jdata.length; x++) {
        var td1 = jdata[x].itemDesc;
        var td2 = jdata[x].hsCode;
        var td3 = jdata[x].slsiUnit;
        var $prodDeccarea = $("#prodDeccarea");
        $prodDeccarea.html($prodDeccarea.html() + '<p>' + "Your product catagory is " + jdata[x].itemDesc + "." + "</p>");
      }
    }
  });
});

【讨论】:

    【解决方案2】:
    $.ajax({
        type: 'GET',
        url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
         dataType: "json",//if you return json data you don't need var jString = JSON.stringify(result);var jdata = JSON.parse(jString);
         beforeSend: function () {
           $("#prodDeccarea").html("");//this will clear previous results 
         },
        success: function (data) {
            $.each(data, function (i, e) {//this will loop through all the results
                $("#prodDeccarea").append("<p>RESULT " + i + " : ".JSON.stringify(e));//this will add to the at the end of #prodDeccarea
            });
        }
    });
    

    【讨论】:

      【解决方案3】:

      你可以使用每个方法https://api.jquery.com/each/

      $("p").each(function(element) {
        console.log(element.text);
      });
      

      这将打印出代码中所有 p 元素的内容。

      【讨论】:

      • 这似乎与手头的问题无关。
      • @charsi 我的绳子如何包含这个功能
      • @charsi .... 电源线工作... 我做了一些 append() ... 然后它工作了,,,
      【解决方案4】:

      猜问题出在这里,你没有积累;

          $("#slsNo").keyup(function () {
              $("#hsCode").val(null);
              $("#slsiUnit").val(null);
              var slsNo = $("#slsNo").val();
              $.ajax({
                  type: 'GET',
                  url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
                  success: function (result) {
                      var jString = JSON.stringify(result);
                      var jdata = JSON.parse(jString);
                      for (var x = 0; x < jdata.length; x++) {
                          if (1 < jdata.length) {
                              var td1 = jdata[x].itemDesc;
                              var td2 = jdata[x].hsCode;
                              var td3 = jdata[x].slsiUnit;
                              //accumulate
                              $("#prodDeccarea").html($("#prodDeccarea").html()+"Your product catagory is " + jdata[x].itemDesc + ".");
      
      
                          } else {
                              var td1 = jdata[x].itemDesc;
                              var td2 = jdata[x].hsCode;
                              var td3 = jdata[x].slsiUnit;
                              $("#hsCode").val(td2);
                              $("#prodDeccarea").html("Your product catagory is " + td1 + ".");
                              if (td3 == "1") {
                                  $("#slsiUnit").val("UNIT1");
                              }
                              if (td3 == "2") {
                                  $("#slsiUnit").val("UNIT2");
                              }
                              if (td3 == "3") {
                                  $("#slsiUnit").val("UNIT3");
                              }
                              if (td3 == "4") {
                                  $("#slsiUnit").val("UNIT4");
                              }
                              if (td3 == "5") {
                                  $("#slsiUnit").val("UNIT5");
                              }
                              if (td3 == "6") {
                                  $("#slsiUnit").val("UNIT6");
                              }
                          }
                      }
                  }
              }
              );
          });
      

      【讨论】:

      • 既然可以使用append(),为什么还要在同一个元素上使用两个选择器来构建HTML字符串?
      • @xianshenglu ..我是 jquery 的新手...如果你能把修改后的线发给我...我无法理解那个理论。
      • @RoryMcCrossan 对 jquery 不熟悉,其实我想用 innerHTM+=,,,,,
      • 谢谢大家......绳子工作......我使用append()
      • 原因是没有积累?
      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 2020-11-29
      • 2021-01-08
      • 2012-01-26
      • 2021-07-12
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多