this.id对应变量

时间:2013-02-06 18:59:47

标签: javascript jquery html

我有一个与数字对应的变量列表。我使用这些变量将数字写入我正在构建的Web应用程序中的“屏幕”。

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 = "-";

example Image

我曾经为每个按钮提供了很长的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>
...

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

相对应

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

3 个答案:

答案 0 :(得分:4)

使用ID为关键字的对象,您将获得数字:

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

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

答案 1 :(得分: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);
});

答案 2 :(得分:1)

这应该这样做:

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

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