JavaScript Eval()生成'意外令牌'错误'

Rya*_*yan 0 javascript jquery eval

我遇到了以下一些代码的问题,我想知道我做错了什么.

我在进行eval调用的行上遇到了Uncaught SyntaxError:Unexpected token)错误.

function myfunction(){
    var p1 = '';
    var p2 = '';
    var p3 = '';

    for (i=1; i<=3; i++){
        eval("$('#p"+i+"').closest('.filter').find('.vals div').each(function(){if ($.trim(p"+i+").length > 0) {p"+i+" += ',';} p"+i+" += $(this).attr('class');});");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是适用的HTML:

<div class="filter">
    <label>Organizations</label>
    <input id="p1" type="text" value="" />
    <div class="vals">
        <div class="3" title="Click to remove">ABC School District</div>
        <div class="4" title="Click to remove">DEF School District</div>
    </div>
</div>
<div class="filter">
    <label>Groups</label>
    <input id="p2" type="text" value="" />
    <div id="vals"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果不是很明显我也在这里使用jQuery.

谢谢

Den*_*nis 5

最好使用数组并正常执行代码:

function myfunction(){
    var p  = [null, '', '', '']; //Empty zeroth element to keep your 1-indexing

    for (i=1; i<=3; i++){
        $('#p'+i).closest('.filter').find('.vals div').each(function(){
            if ($.trim(p[i]).length > 0) {
                p[i] += ',';
            }
            p[i] += $(this).attr('class');
        });
    }
}
Run Code Online (Sandbox Code Playgroud)