【问题标题】:Why i get Uncaught SyntaxError: Unexpected token }为什么我得到 Uncaught SyntaxError: Unexpected token }
【发布时间】:2016-05-18 17:39:57
【问题描述】:

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

     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]+'"

删除后,它会起作用。

谢谢。

【问题讨论】:

  • 是一个 json 数组吗?
  • 检查这一行下面的行。您可能有一个额外的 } 右括号。如果没有错误指的是哪一行,很难判断。

标签: javascript jquery


【解决方案1】:

问题是您在 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 实体。

&amp;#39;代表'

&amp;#34;代表"

你可以找到here的所有实体。

【讨论】:

  • 我相信单引号应该按照代码的逻辑不编码。
  • 这看起来很疯狂,是的,但我会使用 Mahedi Sabuj,它看起来更干净,下次我会采用他使用的方式。感谢您的帮助。
【解决方案2】:

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

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>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2012-05-17
    • 2019-02-10
    • 2014-07-08
    • 2011-03-09
    • 2014-01-06
    • 2012-04-10
    相关资源
    最近更新 更多