Nun*_*z19 5 html javascript math jquery
我需要一些帮助,使用来自其他列的数据并使用用户定义的等式动态计算HTML表格列.
例如,如果用户将等式C1 + C2 * 0.5 + C3 * 0.8输入到输入框中,则表格需要根据等式中定义的列中的数据计算最后一列(C1 =列1,C2 =列2 ...).
我的表数据如下所示:
Student ID | Homework 1 | Homework 2 | Exam points | Final Grade
1 8.75 7.60 55.50 -
2 9.00 4.50 63.00 -
3 7.75 7.40 45.50 -
Run Code Online (Sandbox Code Playgroud)
如果用户在C1 + C2 * 0.5 + C3 * 0.8输入中输入等式,则表格应执行操作并根据该等式填充最终等级列.
结果看起来应该是这样的.
Student ID | Homework 1 | Homework 2 | Exam points | Final Grade
1 8.75 7.60 55.50 56.95
2 9.00 4.50 63.00 61.65
3 7.75 7.40 45.50 47.85
Run Code Online (Sandbox Code Playgroud)
最终成绩的第一行将按此计算(8.75 + 7.60*0.5 + 55.50*0.8).
这是我在HTML中的主体:
<div>
<input id="equation">
</div>
<table>
<tr>
<th>Student ID</th>
<th>Homework 1</th>
<th>Homework 2</th>
<th>Exam points</th>
<th>Final grade</th>
</tr>
<tr>
<td>1</td>
<td>8.75</td>
<td>7.60</td>
<td>55.50</td>
<td class="final-grade">-</td>
</tr>
<tr>
<td>2</td>
<td>9.00</td>
<td>4.50</td>
<td>63.00</td>
<td class="final-grade">-</td>
</tr>
<tr>
<td>3</td>
<td>8.75</td>
<td>7.60</td>
<td>55.50</td>
<td class="final-grade">-</td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
这是一个使用邪恶eval (!)的示例。
C标识符)。 "NaN"。 "-"基本上它创建具有相同的附图标记的对象{"c1":8.75, "c2":7.60, ...},比它EVAL S上的输入字符串替换c*与相应对象值的出现。
function calcGrades() {
const val = this.value.toLowerCase().trim();
$("#grades tbody tr").each((i, TR) => {
let res;
const refs = $("td",TR).get().reduce((ob, TD, i) =>
[ob["c"+i] = parseFloat(TD.textContent), ob][1], {});
try { res = eval(val.replace(/c\d+/g, $1 => refs[$1])).toFixed(2) }
catch (err) { res = "-" }
$(".final-grade",TR).text( res );
});
}
$("#equation").on("input", calcGrades).trigger("input");Run Code Online (Sandbox Code Playgroud)
<input id="equation" type="text" value="C1 + c2 * 0.5 + C3 * 0.8">
<table id="grades">
<thead>
<tr>
<th>ID</th><th>Homework 1</th><th>Homework 2</th><th>Exam pts</th><th>Final</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>8.75</td><td>7.60</td><td>55.50</td><td class="final-grade">-</td></tr>
<tr><td>2</td><td>9.00</td><td>4.50</td><td>63.00</td><td class="final-grade">-</td></tr>
<tr><td>3</td><td>7.75</td><td>7.40</td><td>45.50</td><td class="final-grade">-</td></tr>
<tr><td>4</td><td>0</td><td>0.0</td><td>0</td><td class="final-grade">-</td></tr>
<tr><td>4</td><td>foo</td><td>bar</td><td>baz</td><td class="final-grade">-</td></tr>
</tbody>
</table>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |