单击时更改数组值

时间:2014-02-14 09:27:43

标签: javascript jquery arrays

我试图用jquery来构建某种表构建器。 (显示目的 只)

我有一个按钮,可以像这样添加一个新行:

var row_id = 0;
var row_array = [];

row_array[0] = 0;

$('#add_row').click(function() {

    row_id ++;
    row_array.push(0);
    $('.rows_container').append('<li id="row_id_'+row_id+'" class="row"> <div class="control"><div class="add_columns">Pick number of columns +</div></div><ul class="column_container"> </ul></li>');
}

我首先将row_id设置为0并在数组中创建一个空值。因此,当我第一次单击添加行时,它将获得一个id为row_id_1并在数组中创建一个与当前行id匹配的index1。

现在我已经创建了一个对话框/弹出框,当您单击“选择列数”时显示该对话框/弹出框,并且它使用此函数获取其所在行的ID:

var parent_id = "";

$('body').on('click', '.add_columns', function() {
    $('.pick_columns').css('display', 'block');
    parent_id = $(this).parent().parent().attr('id');
}

在弹出窗口中我有一个输入字段和一个按钮,当你点击按钮时,它会把你在字段中写入的列数放到行中

var min_columns = 1
var columns_used = 0;
var columns_left = 10 - columns_used;

$('.columns_ok').click(function() {
    var picked_value = parseInt($('.number_of_columns').val(),10);

    if((picked_value >= min_columns) && (picked_value <= columns_left)) {

        columns_id ++;

        $('#' + parent_id + ' .column_container').append('<li id="columns_id_' + parent_id + '_' + columns_id + '" class="column used_' + picked_value + '"></li>');

        columns_used += picked_value;
        columns_left = 10 - columns_used;

        $(this).parent().parent().css('display', 'none');
        $('.number_of_columns').val('');
        $('.error_message').css('display', 'none');
    }
    else {
        $('.error_message').css('display', 'block');
    }
}

我现在的问题是:如何将columns_used值保存到与父ID相同的数组索引值中?

因此,如果您选择了5列,它会将数组中的index1的值加5;

1 个答案:

答案 0 :(得分:0)

您可以向Number对象添加属性。如果你用新的操作符显式设置它们。

之间存在差异
  x=5    this represents like in other programming language a primitive DataType, lets better say a primitive DataType object

  x=new Number (5)          this represents an object like =new Object ()

  x.valueOf ()  is representing the primitive DataType

  x.a="test";

但要小心

   alert (5==5)   shows true

   alert (new Number(5)==new Number (5))  shows false, because the Number is threaded like an object, and compared if it is the same object

所以你必须致电

var x=new Number (5);
var y=new Number (5);
alert (x.valueOf()==y.valueOf());

在你的情况下      row_array [0] = new Number(0);

现在您可以添加您的属性