为什么我得到Uncaught SyntaxError:Unexpected token}

时间:2016-05-18 17:39:57

标签: javascript jquery

为什么我得到Uncaught SyntaxError:意外的令牌}:

     btn = '<td class="sentBut"><button type="button" class="btn btn-info" onClick="sentMail("'+tr[0]+'","'+tr[1]+'","'+tr[2]+'")">הזמן/י</button></td>';

这里有什么问题:

"'+tr[0]+'","'+tr[1]+'","'+tr[2]+'"

删除它时,它会起作用。

感谢。

2 个答案:

答案 0 :(得分:3)

问题是您在html标记内使用单引号和双引号。 html为这些赋予了特定的含义。例如,它可能正在读取onClick元素:

onClick="sentMail("

因为您的双引号会关闭开头报价。修复如下:

btn = '<td class="sentBut"><button type="button" class="btn btn-info" onClick="sentMail(&#34;&#39;+tr[0]+&#39;&#34;,&#34;&#39;+tr[1]+&#39;&#34;,&#34;&#39;+tr[2]+&#39;&#34;)">הזמן/י</button></td>';

我知道这看起来有点疯狂,但那些都是html实体。

&#39;代表'

&#34;代表"

您可以找到所有实体here

答案 1 :(得分:0)

您可以使用以下方法。这将减少您的格式问题。

var DataReplacement = function () 
{
    var s = arguments[0];
    for (var i = 0; i < arguments.length - 1; i++) 
    {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i + 1]);
    }
    return s;
}

使用以下功能

var func = DataReplacement("sendEmail('{0}', '{1}', '{2}')", tr[0], tr[1], tr[2]);
btn = '<td class="sentBut"> \
             <button type="button" class="btn btn-info" \
                 onClick="' + func + '"> yourText \
             </button> \
       </td>';