【问题标题】:Replace all div tags of each row of a table替换表格每一行的所有div标签
【发布时间】:2013-01-16 20:30:54
【问题描述】:

我正在尝试替换动态创建的表的每一行上相同的 div 标记。我不知道该怎么做。现在我可以让这个函数工作,但它只替换了第一行 div 标签。这是我的代码:

<script type="text/javascript">
function Calc() {
    var qty = 0;
     qty=parseInt(document.getElementById('qtyEntry').value);
    var weight = parseInt(document.getElementById('weight').innerHTML);
    var cube = parseInt(document.getElementById('cube').innerHTML);
    var carton = parseInt(document.getElementById('carton').innerHTML);

     var newWeight = 0;
     var newCube = 0;
     var newCarton = 0;

    newWeight = qty *weight ;
    newCube = qty * cube;
    newCarton = qty * carton;

     document.getElementById('weight').innerHTML = newWeight;
     document.getElementById('cube').innerHTML = newCube;
     document.getElementById('carton').innerHTML = newCarton;
}

  @{int seq=0;
               foreach (var item in Model)
               {
                   seq++;
                <tr>
                  <td>@seq</td>
                    <td>@item.sku</td>
                    <td>@item.description</td>
                    <td><input type=text id="qtyEntry" name="buildQty" size="3" onchange="Calc()"/></td>
                    <td> <div id="carton">@item.cartonQty</div></td>
                    <td> <div id="weight">@item.weight</div></td>
                    <td><div id="cube">@item.cube</div></td>
                    <td></td>
                </tr>

                }
            }

所以基本上我想在用户更改 buildQty 的文本字段时更新纸箱、重量和立方体数量。我希望每一行都更新。即使我正在更新另一行上的文本,现在也只有第一行更新。

【问题讨论】:

  • ID 必须是唯一的。这是你的问题。
  • 我就是这么想的。所以也许将我的 seq 计数器变量添加到每个 id 的末尾并将其传递给函数,以便我更新正确的行?

标签: javascript html razor asp.net-mvc-4


【解决方案1】:

明显的问题:id 应该是独一无二的。你的不是。所以它只访问第一个。试试这个作为改变:

标记:

<tr>
              <td>@seq</td>
                <td>@item.sku</td>
                <td>@item.description</td>
                <td><input type=text id="qtyEntry@(seq)" name="buildQty@(seq)" size="3" onchange="Calc(@(seq))"/></td>
                <td> <div id="carton@(seq)">@item.cartonQty</div></td>
                <td> <div id="weight@(seq)">@item.weight</div></td>
                <td> <div id="cube@(seq)">@item.cube</div></td>
                <td></td>
</tr>

js:

function Calc(seq) {
 var qty = 0;
 qty=parseInt(document.getElementById('qtyEntry'+seq).value);
 var weight = parseInt(document.getElementById('weight'+seq).innerHTML);
 var cube = parseInt(document.getElementById('cube'+seq).innerHTML);
 var carton = parseInt(document.getElementById('carton'+seq).innerHTML);

 var newWeight = 0;
 var newCube = 0;
 var newCarton = 0;

 newWeight = qty *weight ;
 newCube = qty * cube;
 newCarton = qty * carton;

 document.getElementById('weight'+seq).innerHTML = newWeight;
 document.getElementById('cube'+seq).innerHTML = newCube;
 document.getElementById('carton'+seq).innerHTML = newCarton;
}

但请注意!这可能会改变你的模型绑定,你需要重新审视你从帖子中接受这个的方式。我认为它没有像现在这样正确发布,因为 name 也不是唯一的(这与模型绑定有关)。

【讨论】:

  • 感谢 Travis J。这非常有效,也是我认为我需要做的。幸运的是,我此时没有发帖,只是尝试对表数据进行一些计算,然后将其发送到另一个数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2016-10-15
  • 2021-12-14
  • 2017-05-29
相关资源
最近更新 更多