干嘛有办法吗?

时间:2013-04-19 04:15:53

标签: javascript

我有以下[严重剪切]代码:

data = {};
data['someradio'] = '2';

for(key in data)
{
    if(data.hasOwnProperty(key))
    {
        if(key == 'someradio')
        {
            document.getElementById(key + '1').checked = data[key] == '1' ? true : false;
            document.getElementById(key + '2').checked = data[key] == '2' ? true : false;
            document.getElementById(key + '3').checked = data[key] == '3' ? true : false;
        }
    }
}

有没有办法将3 document.行压缩为1?

这条线实际上有12次(不是3次)重复,仅更改了数字。

3 个答案:

答案 0 :(得分:2)

var counter = 13;

while ( --counter ) {
    document.getElementById(key + counter).checked = data[key] == counter;
}

答案 1 :(得分:2)

data = {};
data['someradio'] = '2';

for(key in data)
{
    if(data.hasOwnProperty(key))
    {
        if(key == 'someradio')
        { 
            for (var i = 1; i <= 3 /*put desired value there */; i++) {
               document.getElementById(key + i).checked = data[key] == i ? true : false;            
            }
        }
    }
}

答案 2 :(得分:1)

这里有一个更便宜的方式:

data = {};
data['someradio'] = '2';

var key = 'someradio';
var p;
if (p = data[key]) {
    for(var i = 1; i < 4; i++) {
        document.getElementById(key + i).checked = (i == p);
    }
}

http://jsfiddle.net/JbpBx/