使用数组记录按钮的点击次数

时间:2011-12-07 10:22:09

标签: javascript

昨晚我编写了一小段JS代码,用于记录键盘上的鼠标点击次数(类似于手机),每次连续按下,新值都会输入到文本框中。这就是我到目前为止的方式。

昨晚的困难在于我将count设置为一个全局变量,如果用户点击1和2,他们将在文本框中获得1D时应该获得12:

http://jsfiddle.net/JNCCW/7/

在我最近的代码中,我尝试创建一个数组,所以最初我们有:

[0,0,0,0]

每次用户点击一个按钮,然后是1,然后是2 - 数组更新为:

[1,1,0,0]

然后将数组1,2中的值1添加到文本框中。

当数组元素等于4时,数组元素将重置为0。

http://jsfiddle.net/JNCCW/9/

我一直难以实现这一点,并认为编码背后的逻辑很尴尬。我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:1)

你需要存储你开始计算索引的元素的id:

var count = 0
var elId;
function input(number) {
    if (elIf != number) {
        elId = number;
        count = 0;
     }

    number = number.split(".");
    document.getElementById('search').value += number[count];
    count++;
    if (count == 4) {
        count = 0;
    }
}

http://jsfiddle.net/JNCCW/15/

更新: http://jsfiddle.net/JNCCW/19/

答案 1 :(得分:1)

这是一个使用对象图和数组的更动态的解决方案。

http://jsfiddle.net/arunpjohny/VMaSV/

HTML

<input id="search" type="text">
<table cellspacing="5" cellpadding="5">
    <tr>
        <td onclick="input(1, [1, 'a', 'b', 'c']);">1</td>
        <td onclick="input(2, [2, 'd', 'e', 'f']);">2</td>
        <td onclick="input(3, [3, 'g', 'h', 'i']);">3</td>
        <td onclick="input(4, [4, 'j', 'k', 'l', 'm', 'n']);">4</td>
    </tr>
</table>

JS

var obj = {
    "id-1": 0,
    "id-2": 0,
    "id-3": 0,
    "id-4": 0
}
function input(id, a) {
    var chars = a[obj["id-"+id]];
    document.getElementById('search').value += chars;
    obj["id-"+id]++;
    if (obj["id-"+id] == a.length) {
        obj["id-"+id] = 0;
    }
}