0

我有一个与数字相对应的变量列表。我使用这些变量将数字写入我正在构建的网络应用程序中的“屏幕”,以获取乐趣。

var zero = 0;
var one = 1;
var two = 2;
var three = 3;
var four = 4;
var five = 5;
var six = 6;
var seven = 7;
var eight = 8;
var nine = 9;
var dec = ".";
var neg = "-";

示例图像

onclick我曾经为每个按钮列出一长串功能:

$('#a0').click(function(){
    writeInput(input, zero);
});

$('#a1').click(function(){
    writeInput(input, one);
});
$('#a2').click(function(){
    writeInput(input, two);
});
...

我想将所有这些点击功能转换成这样的:

$('.btnA').click(function(){
    var id = this.id;
    writeInput(input, id);
});

调用此函数:

function writeInput(field, str){
var text = $(field).val(function(i, v){
              return v + str;
           }).text(function(i, t){
              return t + str
           }).val();
convert(text, version);

}

上面输入数字的所有按钮都有这个 HTML:

...
<a id="seven" class="btnA"><div class="inputBtn mar" id="input7">7</div></a>
<a id="eight" class="btnA"><div class="inputBtn mar" id="input8">8</div></a>
<a id="nine" class="btnA"><div class="inputBtn" id="input9">9</div></a>
...

我的问题是:我可以从中获取 id 名称<a id="nine" class="btnA">并使其与var nine = 9;

我希望这是有道理的。如果没有,请询​​问我会回答任何问题。谢谢!

4

3 回答 3

4

使用带有 ID 的对象作为键,你会得到数字:

var numbers = {one: 1, two: 2, three: 3, .....};

$('.btnA').click(function(){
    var id = numbers[this.id];
    writeInput(input, id);
});
于 2013-02-06T19:01:35.897 回答
2

您可以使用数据类型属性并编写以下内容:

<a data-number="7" class="btnA"><div class="inputBtn mar" id="input7">7</div></a>

$('.btnA').click(function(){
    var number = $(this).data('number');
    writeInput(input, number);
});
于 2013-02-06T19:03:29.910 回答
1

这应该这样做:

$('.btnA').click(function() {
    var t = $(this).text(),
        n = parseInt(t, 10);
    writeInput(input, isNaN(n) ? t : n);
});

但是,您也可以从 id 属性(只是substr“a”)中提取数字,甚至更好地为它们使用数据属性,而不是读取按钮文本。

于 2013-02-06T19:06:01.140 回答