我希望创建一个简化的界面,要求用户选择三个单选按钮中的一个,如下所示:
<form id="icon-type">
<input type="radio" name="icon" value="apples" /> Apples
<input type="radio" name="icon" value="oranges" /> Oranges
<input type="radio" name="icon" value="graphes" /> Grapes
</form>
使用jQuery可以很容易地确定选择了哪三个:
var iconType = $('input[name=icon]:checked').val();
但是,我需要将分配给iconType的字符串转换为先前创建的同名对象。我已经读过eval()
是执行此操作的最佳方式,但也遇到了许多警告,指出永远不应使用eval()
。但是,似乎没有其他方法可以执行此转换。因此,我的问题是:虽然我认识到eval()
肯定会被滥用,但eval()
确实是恰当的方法吗?
非常感谢!
编辑:@DVK,谢谢!虽然还有点丢失;假设我的对象看起来像这样:var apple = new GIcon(baseIcon);
apple.image = "http://localhost/images/apple.png";
var orange = new GIcon(baseIcon);
orange.image = "http://localhost/images/orange.png";
所以我需要将从所选单选按钮检索到的值转换为适当的对象引用。当你解释时,我如何将它们存储在哈希中?谢谢!
答案 0 :(得分:3)
对于像这样的简单字符串,您也可以简单地将匹配的对象存储在哈希中,并像这样访问
var obj = object_map[iconType];
答案 1 :(得分:1)
var obj = window[iconType]
您也可以将对象直接链接到输入。
$(function() {
var form = $("#icon-type");
form.get(0).iconTypeObject = new Apples();
form.get(1).iconTypeObject = new Oranges();
form.get(2).iconTypeObject = new Grapes();
});
var iconObject = $('input[name=icon]:checked')[0].iconTypeObject;