如本例所示
javascript-use-variable-as-object-name
我使用eval来使用DOM属性从数组中选择一个元素。虽然没有直接的方法让用户更改输入,但我希望尽可能安全,并确保在评估之前变量确实是一个整数。
以下哪项是最好,最安全的方式?
$(".listitem").click(function(){
var id = $(this).attr("record-id");
if(!isNaN(new Number(id))){
Storage.search.nearby.currec = rowsHolder[eval(id)];
}else{
// send email to admin, shut down
}
});
或
$(".listitem").click(function(){
var id = $(this).attr("record-id");
if(parseInt(id)){
Storage.search.nearby.currec = rowsHolder[eval(id)];
}else{
// send email to admin, shut down
}
});
更多,但不是必需的信息:
基本上我从在线提取大型JSON字符串,包含一系列记录。在使用for语句( for(in in array))从info创建表时,我将每行推入一个名为 rowsHolder 的数组中,并为tr赋予一个属性记录-ID = “i” 的。然后当用户点击该行时,我会调用您在上面看到的方法。我正在使用PhoneGap和JQuery Mobile。
一如既往,感谢输入
-D
答案 0 :(得分:2)
这里绝对没有理由使用eval
。
id
是一个数字,请使用parseFloat(id)
获取该数字。但不必要,因为它在用作属性名称时将被转换回字符串。id
是整数,请使用parseInt(id, 10)
来获取它。但不必要,因为它在用作属性名称时将被转换回字符串。id
是一个字符串,那就让它成为一个字符串。无论如何,您使用它的属性名称都是一个。