在动态定义的Javascript数组中存储值?

时间:2012-01-17 16:50:05

标签: javascript jquery arrays

我正在编写一个脚本,将元素的ID从'note-1192'格式中分离出来(例如)并将其放入数组中:

    var timers = new Array();

    $('.notes').keyup(function(){

        var timerVariable = $(this).attr('id').split("-");
        timerVariable = timerVariable[0];
        timerVariable = timerVariable.replace('note', '');
        alert(timerVariable); // 1192

        timers[timerVariable] = timerVariable;
        alert(timers.join('\n')); // blank

    });

根本没有将变量存储到数组中,当我提醒'timers array'时它是空的,但是当我提醒'timerVariable'时它出来就好了。

非常欢迎任何建议,谢谢!

6 个答案:

答案 0 :(得分:5)

问题是您正在使用的索引语法是在数组对象上设置命名属性而不添加元素。要向数组添加元素,请使用push

timers.push(timerVariable);

答案 1 :(得分:0)

尝试

<强>阵列:

var timers = new Array();
timers.push(timerVariable);

<强>哈希:

var timers = {};
timers[timerVariable] = timerVariable;

答案 2 :(得分:0)

使用push数组方法将元素添加到数组中。

timers.push(timerVariable);

答案 3 :(得分:0)

var timers = new Array();

$('.notes').keyup(function(){
    timers.push($(this).attr('id').split("-")[0]);
});

答案 4 :(得分:0)

尽管评论中有断言,

"note-1192".split("-")[0].replace("note", "") === ""

简单的解决方法是获取拆分字符串的第二个元素,而不是第一个元素:

var timerVariable = $(this).attr('id').split("-")[1];

为了确保您获得一个数字,您可以使用正则表达式。

var timerId = $(this).attr('id').match(/\d+/);
if (timerId) {
    timerId=timerId[0];
    ...
}

答案 5 :(得分:0)

我认为这就是你要做的事情:

var timers = new Array(); 

$('.notes').keyup(function(){ 

    var temp = $(this).attr('id').split("-"); 
    timerValue = temp[0]; 
    timerID = temp[1];
    alert(timerID); // 1192 

    timers[timerID] = timerValue; 
    alert(timers.join('\n'));

}); 

按照目前的方式,timerVariable最终会成为'',所以你最后所做的就是:

timers[''] = '';