【问题标题】:how to add the input values in an array如何在数组中添加输入值
【发布时间】:2011-10-05 21:11:51
【问题描述】:

我只是想询问有关在数组中添加数据的问题。但我想输入的数据来自输入框表。这是我一直在练习获取数据的代码:

http://jsfiddle.net/yajeig/4Nr9m/69/

我有一个添加按钮,每次单击该按钮时,它都会将数据存储在my_data 变量中。

我想在我的变量中产生如下输出:

my_data  = [ {plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"}] 

如果我要再次添加另一个数据,它将添加该变量,它是这样的:

my_data  = [ {plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"},
     {plank:"2",thickness:"5",width:"6",length:"2",qty:"1",brdFt:"50"}] 

我现在的代码真的很糟糕,所以请帮忙。

目前我的输出: 1,4,6,4,1

【问题讨论】:

  • 在加载时用一堆警报向您发送垃圾邮件的小提琴很烦人。

标签: javascript arrays json


【解决方案1】:

您应该能够使用以下内容遍历所有文本框:

function add(e) {
    var obj = {};

    $('#addItem input[type="text"]')
        .each(function(){obj[this.name] = this.value;});
    myItems.push(obj);
}

myItems 是您的项目的全局容器,#addItem 是您的表单。

更新jsfiddle

如果您使用表单和提交按钮,那么您应该能够实现一种非 JavaScript 方法来添加您的信息,以便没有启用 JavaScript 的人可以访问该网站。

【讨论】:

  • 非常好。它非常有效,但我只是想知道如何获得 "Test":"" 并摆脱它..
  • @jayAnn:我已经更新了我的答案以遍历表单中的每个文本框。它应该产生你想要的结果。 jsFiddle 也已更新。
【解决方案2】:

试试这个,很抱歉修改了你的表单,但效果很好:

HTML:

<form method="post" action="#" id="add_plank_form">
    <p><label for="plank_number">Plank number</label>
    <p><input type="text" name="plank_number" id="plank_number"/></p>

    <p><label for="plank_width">Width</label>
    <p><input type="text" name="plank_width" id="plank_width"/></p>

    <p><label for="plank_length">Length</label>
    <p><input type="text" name="plank_length" id="plank_length"/></p>

    <p><label for="plank_thickness">Thickness</label>
    <p><input type="text" name="plank_thickness" id="plank_thickness"/></p>

    <p><label for="plank_quantity">Quantity</label>
    <p><input type="text" name="plank_quantity" id="plank_quantity"/></p>

    <p><input type="submit" value="Add"/>
</form>

<p id="add_plank_result"></p>

Javascript:

$(document).ready(function() {

    var plank_data = Array();

    $('#add_plank_form').submit(function() {

        // Checking data
        $('#add_plank_form input[type="text"]').each(function() {
            if(isNaN(parseInt($(this).val()))) {
                return false;
            }
        });

        var added_data = Array();
        added_data.push(parseInt($('#plank_number').val()));
        added_data.push(parseInt($('#plank_width').val()));
        added_data.push(parseInt($('#plank_length').val()));
        added_data.push(parseInt($('#plank_thickness').val()));
        added_data.push(parseInt($('#plank_quantity').val()));

        $('#add_plank_form input[type="text"]').val('');

        plank_data.push(added_data);

        // alert(JSON.stringify(plank_data));

        // compute L x W x F for each plank data
        var computed_values = Array();
        $('#add_plank_result').html('');
        for(var i=0; i<plank_data.length; i++) {
            computed_values.push(plank_data[i][1] * plank_data[i][2] * plank_data[i][3] / 12);
            $('#add_plank_result').append('<input type="text" name="plank_add[]" value="' + computed_values[i] + '"/>');
        }

        return false;
    });
});

【讨论】:

  • 但我只是想知道如何从上述数据的结果中添加一个输入框。我想在末端有板脚,计算为l x w x f / 12。我现在遇到了这个问题
  • 如果数组中有多个plank信息,如何计算值?我的意思是,如果数据是[{1, 2, 3, 4, 5}, {7, 8, 9, 4, 4}],那么计算出来的值就是[2, 24]?
  • 不,不是这样。我想在我的 json 中添加板脚计算。它是这样的:[{"plank_no":"1","thickness":"4","width":"6","length_t":"8","qty":"7","board_ft":"16"}]。我要感谢您在这方面对我的真正帮助。
  • 我现在已经拿到了。顺便说一句,AsKaiser,你以前的代码真的对我有帮助。这就是我现在使用的,但我的还在一张桌子里面:)。再次感谢您。
【解决方案3】:

遍历所有键,并添加值。 (代码由头脑编写,未经测试)

var added = { };
for (var i = 0; i < my_data.length; i ++) {
  var json = my_data[i];
  for (var key in json) {
    if (json.hasOwnProperty(key)) {
      if (key in added) {
        added[key] += json[key];
      } else {
        added[key] = json[key];
      }
    }
  }
}

【讨论】:

    【解决方案4】:

    您可以使用the javascript array push function

    var data = [{plank:"1",thickness:"4",width:"6",length:"8",qty:"1",brdFt:"16"}];
    
    var to_add = [{plank:"2",thickness:"5",width:"6",length:"2",qty:"1",brdFt:"50"}];
    
    data = data.concat(to_add);
    

    【讨论】:

    • 感谢您的回答,但我仍然无法使用它,因为我仍然不知道如何将我的输出作为 json。也许一旦我可以有一个 json 输出,我会使用这个。我现在的输出是`1,4,6,4,1`。
    【解决方案5】:

    抱歉,我只看了一眼其他解决方案。

    $(document).ready(function() {
     var myData=[];
        var myObject = {} 
            $("input").each(function() {
                myObject[this.id]=this.value
            });
         alert(myObject["plank"])
       myData.push(myObject)
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-01
      • 2018-10-22
      • 1970-01-01
      • 2021-12-25
      • 2020-04-12
      • 2021-11-19
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多