javascript - 循环遍历 jQuery 数组/将值输出到 div
问题描述
我有一个按钮,每次点击动态创建 2 个输入
输入 1 的数据:字符串 输入 2 的数据:数字 (float) (0-100)
我正在创建一个这样的数组。
var recipe_flavour_name = $("input[name='flav-name']").map(function() {return $(this).val();}).get();
var recipe_flavour_percent = $("input[name='flav-percent']").map(function(){return $(this).val();}).get();
据我所知,数组是逗号分隔的值。
为简单起见,让我们说:
recipe_flavour_name = a,b,c
recipe_flavour_percent = 5,6,7
然后我想number value
在函数中使用,然后遍历所有值并使用 jQuery.html()
将值添加到div
.
我试过这个:flavPercent1
只是recipe_flavour_percent
var arrayLength = flavPercent1.Length;
for (var i = 0; i < arrayLength; i++) {
var flavML = (flavPercent1[0] / 100 * 100 * 1000) / 1000;
var flavGrams = (flavML * .98 * 100) / 100;
var flavPercent = (flavML / 100 * 1E4) / 100;
$('.live-flavours').html('<tr>'+flavName[0]+'<td></td>'+parseFloat(flavML).toFixed(2)+'<td>'+parseFloat(flavGrams).toFixed(2)+'</td><td>'+parseFloat(flavPercent1[0]).toFixed(2)+'</td></tr>');
};
但是我只得到 flavGrams 和 flavPercent 返回,动态地将更多数据添加到数组中没有任何作用。
我想达到什么目标?
- 获取数组中指定输入的值。
- 将它们传递给函数。
- 循环遍历这些值并使用 jQuery 以 HTML 格式输出它们。
我希望这是有道理的,并提前感谢。
解决方案
Ok, so assuming that you don't have a problem getting the arrays you need, the problem lies within your for loop.
YOUR CODE:
for (var i = 0; i < arrayLength; i++) {
var flavML = (flavPercent1[0] / 100 * AMOUNT * 1000) / 1000;
var flavGrams = (flavML * .98 * 100) / 100;
var flavPercent = (flavML / AMOUNT * 1E4) / 100;
$('.live-flavours').html('<tr>'+flavName[0]+'<td></td>'+parseFloat(flavML).toFixed(2)+'<td>'+parseFloat(flavGrams).toFixed(2)+'</td><td>'+parseFloat(flavPercent1[0]).toFixed(2)+'</td></tr>');};
You put everything in the for loop, yet make no reference to the index. I'm assuming everywhere you put [0] you actually want [i]. This means that every time the index increases, you are getting the next array element.
You should use .append instead of .html. .html means that the current html will be replaced by what you are adding.
Finally, although making it dynamic is possible, I'm not sure that JQuery is the best libary to use in this case. I'd suggest taking a look at libraries such as Vue or MoonJs (both are very light and very simple libraries) etc... to find a much easier, and frankly better way to do this. They allow for dynamic rendering, and what you are trying to do becomes insanely simplified.
Hope this helps.
(hopefully) WORKING CODE:
for (var i = 0; i < arrayLength; i++) {
var flavML = (flavPercent1[i] / 100 * AMOUNT * 1000) / 1000;
var flavGrams = (flavML * .98 * 100) / 100;
var flavPercent = (flavML / AMOUNT * 1E4) / 100;
$('.live-flavours').append('<tr>'+flavName[i]+'<td></td>'+parseFloat(flavML).toFixed(2)+'<td>'+parseFloat(flavGrams).toFixed(2)+'</td><td>'+parseFloat(flavPercent1[i]).toFixed(2)+'</td></tr>');};
推荐阅读
- javascript - 添加带有边框的工具提示箭头,仅使用css背景颜色应该是透明的
- html - 如何绑定到 ngFor
- postgresql - 如何使用 plpgsql 函数将实际月份划分为 5 天
- python - 将新键/值添加到 geojson 文件中的嵌套字典
- angular - CanActivate Observable 在服务检查延迟时返回 false
- javascript - 使用 Vue-Treeselect 不存在时找不到添加新项目的方法
- mongodb - 具有 2 个属性条件的 MongoDB $elemMatch
- c++ - 在内存流而不是 C++ 中的文件流中写入/读取内容
- yocto - 二进制需要 /lib64 但只有 /lib
- powerbi - DAX Measure 从创建的 Measure 中计算 Sum 和 Count