【问题标题】:javascript with laravel blade template loop and sum带有laravel刀片模板循环和总和的javascript
【发布时间】:2018-12-21 22:20:43
【问题描述】:

我正在尝试使用 java 脚本对我的表进行计算,但我不知道如何将它与其余的 id 循环。现在我只能计算单个项目如何使这个倍数这里是结果

正如你所见,只有 id 1 得到结果,而 id 2 为 null 我怎样才能使这项工作在这里是我的 java 脚本

function calc(){     
         var n1 = parseFloat(document.getElementById('n1').value);
         var n2 = parseFloat(document.getElementById('n2').value);
         var oper = document.getElementById('result').value = n1*4+n2; 
}

  <table id="my-table" class="table table-hover table-bordered">
                <thead>
                    <tr >
                      <th class="text">NAME</th>
                      <th class="text">A/P</th>
                      <th class="text">H/W</th>
                      <th class="text">Result</th>
                    </tr>
                 </thead>
                 <tbody>
                 @foreach($scores as $index => $score) 
                 <tr> 
                 <td>{{$score->lead->student_name}} <input type="hidden" name="scores[{{$loop->index}}][id]" value="{{$score->id}}"></td> 
                 <td style="text-align:center"><input id="n1" type="text" name="scores[{{$loop->index}}][jan_ap]" value="{{$score->jan_ap}}" class="input" autocomplete="off"></td> 
                 <td style="text-align:center"><input id="n2" type="text" name="scores[{{$loop->index}}][jan_hm]" value="{{$score->jan_hm}}"  class="input" autocomplete="off"></td> 
                 <td style="text-align:center"><input id="result" type="text" name="scores[{{$loop->index}}][result]" value="{{$score->result}}"  class="input" autocomplete="off"></td> 
                 </tr> 
                 @endforeach
                </tbody>
                </table><div class="form-group ">
                <button onclick="calc(); " type="submit">Submit</button>
                </div> 

【问题讨论】:

  • 你能改写你的问题吗?您提到了表格,但您向我们展示了一个带有 json 的 api。我应该假设您使用 json 使用刀片创建表吗?阅读的好主意:stackoverflow.com/help/how-to-ask
  • 对不起,请尝试再次阅读我的问题,我向您展示的图像是我从表中返回的结果,我试图计算表中的每个 id..
  • @Grace 当您说表格时,您是指 HTML 表格,还是您的数据库表格?您提到此 javascript 在刀片模板中。如果是这样,您可能以错误的方式处理此问题。您似乎正在尝试从某个 DOM 元素中读取值,但您可能更容易将数据直接传递给刀片模板中的 javascript,请参阅此处的文档:laravel.com/docs/5.6/blade#displaying-data 这也是示例:` `
  • 计算后要显示在结果文本框中?
  • 如果可能的话..

标签: javascript php laravel for-loop


【解决方案1】:

从聊天讨论和您的控制器代码中发现,您想要添加带有一些公式的行并将结果保存在数据库中的 results 字段中。所以这里我们想出了代码

控制器保存方法

$scores = $request->input('scores');

foreach($scores as $row){ 
    $score = Score::find($row['id']); 
    $score->jan_ap = $row['jan_ap']; 
    $score->jan_hm = $row['jan_hm']; 
    $score->result = round($row['jan_ap'] * 0.5) + ($row['result'] * 0.5); 
    $score->save(); 
}

注意:从刀片模板中删除结果文本输入,因为它不再使用。

【讨论】:

  • 是的,绝对答案 php 是计算它并将其存储到数据库的方法,谢谢 MAster @rkj 帮助我解决这个问题..以及其他给出答案的人..
【解决方案2】:

我会用我将做出的一些假设来回答这个问题,因为从问题中它并不是很清楚。

假设 1: 您使用从某处获取数据的刀片呈现此表:

<div id="myTabDiv">
<table name="mytab" id="mytab1">
<tr> 
  <td>col1 Val1 (has ID)</td>
  <td>col2 Val2 (has jan_ap)</td>
  <td>col3 Val3 (has jan_hm)</td>
  <td>col4 Val4 (has result)</td>
</tr>
<tr>
  <td>col1 Val1 (has ID)</td>
  <td>col2 Val2 (has jan_ap)</td>
  <td>col3 Val3 (has jan_hm)</td>
  <td>col4 Val4 (has result)</td>
</tr>

假设 2:你已经用值填充了 col 1-3,但是你有一个神奇的按钮,当点击它时会计算 col4。该按钮使用了JS函数。

function calc(){    
var table = document.getElementById("mytab1");
for (var i = 0, row; row = table.rows[i]; i++) {
  //iterate through rows
  //rows would be accessed using the "row" variable assigned in the for loop
 for (var j = 0, col; col = row.cells[j]; j++) {
   //iterate through columns
   //columns would be accessed using the "col" variable assigned in the for loop
   //here you can do things like saying sum col[1] + col[2] and then input result in col[3]
   }  
  }
}

【讨论】:

  • 是的,先生假设 2 是正确的,我将更新我的问题..查看图片
  • 我只针对两个 col 即 jan_ap 和 jan_hm 然后将计算填充到 col 结果.. 有可能吗?
猜你喜欢
  • 2015-12-01
  • 1970-01-01
  • 2019-03-02
  • 2017-02-19
  • 2018-12-18
  • 2017-07-15
  • 1970-01-01
  • 2017-09-26
  • 2020-09-26
相关资源
最近更新 更多