根据元素的数量附加到数组
这是我目前的代码:
$(function() { $("#submitBtn").on("click", submitted); $(".add-row-btn").on("click", function(evt) { evt.preventDefault(); evt.stopPropagation(); $(".container").append(createNewRow()); }) $(".remove-row-btn").on("click", function(evt) { evt.preventDefault(); evt.stopPropagation(); $(".container div").eq($(".container div").length - 1).remove(); }) $('#amount').on('change', function() { var containerEl = $(".container"); containerEl.empty(); var startingNumberOfLines = parseInt($("#amount").val()); for (var i = 0; i < startingNumberOfLines; i++) { $(".container").append(createNewRow()); } }); $(".add-row-btn").trigger("click"); }) var createNewRow = function() { var lineTitleEl = $("").attr("placeholder", "enter text here") .addClass("line-title"); var labelEl = $("
当只有一行时,代码正常工作,因为数组是以我想要的格式输出的。 但是,当有多行时,它会使用不同的变量再次输出相同的行。
我希望它看起来像这样:
例如,如果这是输入
我希望输出看起来像这样:
submitted your array is: [{"posx":1,"posy":-1,"text":"test1"},{"posx":-0.1,"posy":0.05,"text":"test2"}]
另一个例子,如果有3行像这样
我希望输出看起来像这样:
submitted your array is: [{"posx":1,"posy":-1,"text":"test1"},{"posx":-0.1,"posy":0.05,"text":"test2"},{"posx":-0.3,"posy":0.25,"text":"test3"}]
如何根据行数使输出看起来像这样?
非常感谢所有帮助,谢谢。
在打印之前,您需要将输出保存到数组中。 见下文。
与@zatopeks类似,但我有点迟了……
使用map()
为每行创建一个对象数组。
向行添加一些类以使它们易于隔离,然后映射每一行
const data = $('.input-row').map(function() { const $row = $(this) return { posx: $row.find('.pos-x').val(), posy: $row.find('.pos-y').val(), text: $row.find('.line-title').val() }; }).get() console.log(data)
.as-console-wrapper { max-height: 100%!important;}
仔细查看提交的()中发生的事情。 在每个循环上打印该行。 你想要的是提前打印手续,然后在循环期间只打印{}对象。
这样的事情,可能是: