昨晚我编写了一小段JS代码,用于记录键盘上的鼠标点击次数(类似于手机),每次连续按下,新值都会输入到文本框中。这就是我到目前为止的方式。
昨晚的困难在于我将count设置为一个全局变量,如果用户点击1和2,他们将在文本框中获得1D时应该获得12:
在我最近的代码中,我尝试创建一个数组,所以最初我们有:
[0,0,0,0]
每次用户点击一个按钮,然后是1,然后是2 - 数组更新为:
[1,1,0,0]
然后将数组1,2中的值1添加到文本框中。
当数组元素等于4时,数组元素将重置为0。
我一直难以实现这一点,并认为编码背后的逻辑很尴尬。我将不胜感激任何帮助!
答案 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;
}
}
答案 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;
}
}