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

时间:2011-10-26 13:18:51

标签: 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');});");
    }
}

以下是适用的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>

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

由于

3 个答案:

答案 0 :(得分: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');
        });
    }
}

答案 1 :(得分:4)

您的代码,没有评估

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

    for (i=1; i<=3; i++){
        $("#p"+i).closest(//..... rest here

答案 2 :(得分:1)

你可能错过了一个“

 eval("$('#p" + i + "'")...

FWI:您可以更轻松地将其分解为多个不连续的代码行并使用命名函数,而不是嵌套函数和链接。