在没有Eval的Javascript中执行字符串

时间:2016-10-25 02:22:26

标签: javascript jquery eval

我已使用eval完成了该操作,但我读到了eval is evil。所以我很好奇:如何在没有eval()的情况下写这个?我已经尝试了一些样本,但它没有用。是否可以在没有evaleval的情况下执行此操作?

$(".test").each(function(){
    var xyz = "";
    var w = $(this).last().attr("name");
    for(var i=0; i< (w-1);i++){
        var xyz = xyz + ".prev()";
    }
    var x = '$(this).first().parent()' + xyz;
    var y = x + '.find("td.one").attr("rowspan",'+w+');';
    eval(y);    
});

1 个答案:

答案 0 :(得分:2)

eval()不是邪恶的,它几乎总是错误的工具。例如,您的算法可以在不乱用字符串的情况下实现,因此您不需要考虑eval()

$(".test").each(function(){
    var w = $(this).attr("name");
    var el = $(this).parent();
    for(var i=0; i < w-1; i++){
        el = el.prev();
    }
    el.find("td.one").attr("rowspan", w);
});

另请注意,您对.last().first()的使用是多余的,因为在.each()循环中this将引用单个DOM节点。