Javascript 如何在动态父(DIV)循环中获取动态子值

Javascript 如何在动态父(DIV)循环中获取动态子值,javascript,jquery,html,Javascript,Jquery,Html,我有一个关于动态对象HTML的问题,我认为它很复杂。我需要读取子对象的值,它在父div中是动态的,也是动态的 我很难找到一个合适的脚本,在这个脚本中,我可以相应地读取子对象的值,并在发布到服务器之前将数据作为一个组保存 下面让我向您展示一个与firefox firebug相同的脚本示例:- <div id="divtrans[]" class="purchase-items"> <input type="button" name="tripno[]" value="PB"

我有一个关于动态对象HTML的问题,我认为它很复杂。我需要读取子对象的值,它在父div中是动态的,也是动态的

我很难找到一个合适的脚本,在这个脚本中,我可以相应地读取子对象的值,并在发布到服务器之前将数据作为一个组保存

下面让我向您展示一个与firefox firebug相同的脚本示例:-

<div id="divtrans[]" class="purchase-items">
  <input type="button" name="tripno[]" value="PB" class="field btn-field">
  <input type="text" name="busno[]" value="XX001" class="field txt-field">
  <input type="text" name="amount[]" value="500" class="field txt-field">
  <input type="button" id="btnhideshowdiv" class="hideshow-div btn-remove" style="border:solid">
  <div id="comission" style="margin-left:25px;background-color:antiquewhite">
    <label style="float:left; margin-right:100px;">Commision</label><label>Amount</label>
    <ul>
      <li>
        Advance
        <input type="text" name="txtadvance[]" value="60" />
      </li>
      <li>
        Pay Trip
        <input type="text" name="txtpaytrip[]" value="60" />
      </li>
    </ul>
  </div>
  <div id="divexpeses" style="margin-left:25px;background-color:antiquewhite">
    <label style="float:left; margin-right:100px;">Expenses</label><label>Amount</label>
    <ul>
      <li>
        Advance
        <input type="text" name="txtpetrol[]" value="70" />
      </li>
      <li>
        Pay Trip
        <input type="text" name="txtticket[]" value="70" />
      </li>
    </ul>
  </div>

</div>

<div id="divtrans[]" class="purchase-items">
  <input type="button" name="tripno[]" value="PB" class="field btn-field">
  <input type="text" name="busno[]" value="XX002" class="field txt-field">
  <input type="text" name="amount[]" value="1000" class="field txt-field">
  <input type="button" id="btnhideshowdiv" class="hideshow-div btn-remove" style="border:solid">
  <div id="comission" style="margin-left:25px;background-color:antiquewhite">
    <label style="float:left; margin-right:100px;">Commision</label><label>Amount</label>
    <ul>
      <li>
        Advance
        <input type="text" name="txtadvance[]" value="80" />
      </li>
      <li>
        Pay Trip
        <input type="text" name="txtpaytrip[]" value="80" />
      </li>
    </ul>
  </div>
  <div id="divexpeses" style="margin-left:25px;background-color:antiquewhite">
    <label style="float:left; margin-right:100px;">Expenses</label><label>Amount</label>
    <ul>
      <li>
        Advance
        <input type="text" name="txtpetrol[]" value="90" />
      </li>
      <li>
        Pay Trip
        <input type="text" name="txtticket[]" value="90" />
      </li>
    </ul>
  </div>

</div>
然后和孩子们一起跳两段舞

divcommision[]
txtadvance[]
txtpay[]

divexpenses[]
txtpetrol[]
txtticket[]
所有这些都有价值,我需要收集所有价值,并将其作为字符串写入如下内容:-

parent1/PB,XXX001,500/60,60/70,70

parent2/PB,XXX002,1000/80,80/90,90
我已经在下面这样的函数上做了什么,但在循环时读取子值仍然不起作用:-

function readparentchildelement() {
  var tdivtrans=0;
  var dt
  tdivtrans= $('div.purchase-items').length
  for (start = 0; start < tdivtrans ; start++) {
    //$.each($('div.purchase-items').parents(), function (index, value) {
    //read parent div one by one
    alert($('.purchase-items').index(start));
    dt="parent" & start &"/"                                       

    var ch
    //then read tripno[] busno[] amount[]
    ch=$('.purchase-items').index(start).($('tripno')[start]).val());
    ch= ch & "," & $('.purchase-items').index(start).($('busno')[start]).val());
    ch= ch & $('.purchase-items').index(start).($('busno')[start]).val()) & "/";
    alert(ch);

    var chDiv1
    //read child inside divcommison

    var chDiv2
    //read child inside divexpenses

    //--loop ++ read next children
    //});
    } 
  $("#txtMyValue").Val(pr & ch & chDiv1 & chDiv2);
}
函数readparentchildelement(){ var tdivtrans=0; var dt tdivtrans=$('div.purchase-items')。长度 对于(start=0;start
我不知道如何使用正确的语法来运行它,请帮助我

对html进行一次更正。不建议使用相同id的两个元素。因此,我建议您将Commission和DivExpresses设置为具有这些名称的类,而不是作为id。这会让你的生活轻松很多

我无法理解您是如何构造所请求的字符串的,因此我创建了一个虚拟对象,并将其全部打印到控制台。这里是指向小提琴()的链接。我已经修改了HTML,将commission和divexpse作为类。只需打开开发工具并查看控制台。它是这样写的:

parent 1
tripno -> PB
busno -> XX001
amount -> 500
txtadvance -> 60
txtpaytrip -> 60
txtpetrol -> 70
txtticket -> 70
--------------------
parent 2
tripno -> PB
busno -> XX002
amount -> 1000
txtadvance -> 80
txtpaytrip -> 80
txtpetrol -> 90
txtticket -> 90
--------------------

非常感谢您的帮助,我将尝试采用您的代码使其在我的情况下运行。我会给你回复结果的。再次感谢Maaz Syed Adeeb。遵循您的代码后,我设法得到我想要的。我想知道,如果我想做一些自动计算,比如说我在TxtPetrole=90和txticket=90上输入值,那么在我输入时,父2内的div费用金额将显示180?您认为jquery可以做到这一点吗?因为如何确定我键入的子项的哪个父项来显示结果。我相信您所问的是jquery.change()和.parent()的组合。也许你可以问另一个关于这个问题的问题。我发布了关于这个问题的新问题:-****希望你能回答。谢谢你分享你的知识和帮助我。我对javascript/jquery功能完全陌生。再次感谢。
parent 1
tripno -> PB
busno -> XX001
amount -> 500
txtadvance -> 60
txtpaytrip -> 60
txtpetrol -> 70
txtticket -> 70
--------------------
parent 2
tripno -> PB
busno -> XX002
amount -> 1000
txtadvance -> 80
txtpaytrip -> 80
txtpetrol -> 90
txtticket -> 90
--------------------