【问题标题】:Uncaught SyntaxError: Unexpected identifier error未捕获的 SyntaxError:意外的标识符错误
【发布时间】:2014-01-21 14:07:40
【问题描述】:

每当我尝试单击下面的链接时,我都会在 Chrome 开发人员工具控制台中看到 (Uncaught SyntaxError: Unexpected identifier error)。我真的看不出我的代码有什么问题,所以有人可以检查一下并告诉我我在这里缺少什么吗?

<a href="javascript:warningMsg('Are you sure you want to delete this User? This step can't be undone!','/invoicing/users/','2','delete-user')">Delete User</a>

下面是warningMsg函数,不幸的是它甚至没有被调用,但是包含它的.js文件包含在上面链接的html页面中:

function warningMsg(warningMsgContent, url, id, actionType){
 alert(url+actionType+"?id="+id);
 window.location.assign(url+actionType+"/?id="+id);
}

注意:我尝试通过做它 can't 来转义 Can't 中的 ' 但我得到了同样的错误

感谢您的时间和努力

【问题讨论】:

  • 尝试改用window.location = url+actionType+"/?id="+id;
  • 1.注意你的引号 2. 不要使用内联 javascript :)
  • @RononDex 你是一名跑步者...我听说过故事,但我不相信它们是真的。
  • @MikeHometchko 他们是,实际上还有几个跑步者。很高兴 SGA 可以帮助我! :P
  • @MikeHometchko 完全同意 ;)

标签: javascript


【解决方案1】:

这是因为“不能”一词中的' - 它会导致您的引号不匹配。

'Are you sure you want to delete this User? This step can't be undone!'
^                                                        ^            ^

要解决此问题,您需要使用反斜杠转义“不能”中的 '

'Are you sure you want to delete this User? This step can\'t be undone!'

【讨论】:

  • 尝试通过 can\'t 转义 Can't 中的 ' 但我仍然收到相同的错误...有什么建议吗?谢谢
  • @JamesDonnelly 在不弄乱 html 属性的情况下,他不能真正用不同的引号括起来。 IMO,对此类问题的任何回答都应包括“不要使用内联 js”。
【解决方案2】:

can't 中有一个未转义的单引号。应该是can\t

<a href="javascript:warningMsg('Are you sure you want to delete this User? This step can\'t be undone!','/invoicing/users/','2','delete-user')">Delete User</a>

但是,内联 js(您的 html 中的 javascript)永远不应使用(除非用于快速测试目的)。阅读其中一些结果:Why is inline js bad?

相反,用 javascript 附加 javascript!

<a id="delete-user">Delete User</a>

JavaScript:

var d = document.getElementById('delete-user');
d.addEventListener('click', function() {
  warningMsg(
    "Are you sure you want to delete this User? This step can't be undone!",
    '/invoicing/users/',
    '2',
    'delete-user'
  );
});

Here's a live demo you can mess with.

【讨论】:

    【解决方案3】:

    试试This step can\'t be undone!

    而不是This step can't be undone!

    【讨论】:

      【解决方案4】:

      window.location.assign(url+actionType+"/?id="+id); 中,您将产生类似于以下的结果:

      /invoicing/users/?id=2
      

      因此:url+actionType+"/?id="+id

      当然,除了其他人提到的引用转义问题之外。

      【讨论】:

        【解决方案5】:

        替换:

        <a href="javascript:warningMsg('Are you sure you want to delete this User? This step can't be undone!','/invoicing/users/','2','delete-user')">Delete User</a>
        

        到:

        <a href="javascript:warningMsg('Are you sure you want to delete this User? This step can\'t be undone!','/invoicing/users/','2','delete-user')">Delete User</a>
        

        (需要转义can't这个词中的'

        无论如何,我通常建议您使用事件处理程序而不是内联代码(onclick=...):

        html:

        <a id="btn_delete" href="#">Delete user</a>
        

        javascript:

        document.getElementById('btn_delete').addEventListener('click', function() {
            warningMsg('Are you sure you want to delete this User? This step can\'t be undone!','/invoicing/users/','2','delete-user');
        });
        

        希望有帮助。

        【讨论】:

        • 劝阻内联 js 做得很好,但您建议使用 onlick 而不是首选的 addEventListener
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多