我有一个数组selected_filters
,我用点击元素的id填充。我需要根据这个数组生成一个if
语句。我尝试生成字符串然后使用eval()
来执行它,但是没有用。也许我做错了什么或者你有什么想法如何生成声明?
语句字符串生成:
var selected_filters = [filter_by_color,filter_by_transmissivity];
$.each(selected_filters, function(k, v){
validate += '($.inArray(t.data(' + v + '),filters_obj[' + v + ']) > -1 || obj_l == emptyFilters) && ';
});
validate += '(search.contains(filters_obj.search) || filters_obj.search.length === 0)';
生成的字符串:
($.inArray(t.data(filter_by_color),filters_obj[filter_by_color]) > -1 || obj_l == emptyFilters) && ($.inArray(t.data(filter_by_transmissivity),filters_obj[filter_by_transmissivity]) > -1 || obj_l == emptyFilters) && (search.contains(filters_obj.search) || filters_obj.search.length === 0)
用法:
if(eval(validate)){ //some code }
答案 0 :(得分:0)
找到解决方案。改变了逻辑,不再使用eval()
。
将代码更改为:
var visible = true;
$.each(selected_filters, function(k, v){
visible = visible && ($.inArray(t.data(v),filters_obj[v]) > -1 || filters_obj[v].length === 0);
});
visible = visible && (search.contains(filters_obj.search) || filters_obj.search.length === 0);
使用方法:
if(visible){ //some code }