【问题标题】:javascript unexpected token }javascript 意外令牌 }
【发布时间】:2015-06-11 16:37:27
【问题描述】:

我有这段代码,我在网页上创建两个链接元素并向它们添加点击事件:

function createNewChat(){
     //alert("new chat fired");
     var roomName = document.getElementById("roomName").value
     if (roomName){
        resetErrorLog();           
        $('#createRoom').append('<p>would you like to password protect this room?</p>');
        $('#createRoom').append('<div><a href="#" onclick="newChatHelper("yes")"> yes </a></div>');
        $('#createRoom').append('<div><a href="#" onclick="newChatHelper("no")"> no </a></div>');
     }
     else {
     document.getElementById("errorlog").innerHTML = "<p>The room name input box seems to be empty</p>";
     }
  }

DOM 正确更新,但是当我单击链接时,我在第 2 行得到了一个意外的标记 },这是一个标记。此代码块在文件中的位置要晚得多。辅助方法根本没有被触发,所以我很确定问题出在这段代码上。非常感谢您的帮助。

【问题讨论】:

  • 检查链接并查看 HTML onclick="newChatHelper("no")" 变成了什么(提示:查看引号)。

标签: javascript jquery html dom web


【解决方案1】:

onclick="newChatHelper("yes")" 是 HTML 中的引用问题

你需要使用onclick="newChatHelper('yes')"——注意函数调用中的引号

但是因为你已经在单引号中有这个,你需要转义内部的单引号,像这样:

'<div><a href="#" onclick="newChatHelper(\'yes\')"> no </a></div>'

您也可以考虑完全不使用onclick 属性

$('#createRoom').append(
  $('<a href="#">yes</a>').click(function(event) {
    newChatHelper("yes");
    event.preventDefault();
  }).wrap('<div/>').parent()
);

$('#createRoom').append(
  $('<div></div>').append(
    $('<a href="#">yes</a>').click(function(event) {
      newChatHelper("yes");
      event.preventDefault();
    })
  )
);

【讨论】:

  • 是的。我认为它比这更深。单引号会打断外引号
  • 您可能想展示如何将单引号嵌入到字符串文字中。
  • 我建议将\" 作为快速解决方案,但它冒犯了我的敏感:)
  • @slebetman:反正也无济于事,因为\ 不是 HTML 中的转义字符。 IE。 onclick="newChatHelper(\"yes\")" 仍然会产生错误的结果。
  • @FelixKling,我还提供了一个可以完全避免转义的解决方案:)
【解决方案2】:
var roomName = document.getElementById("roomName").value

你可能想用 ; 来结束它

var roomName = document.getElementById("roomName").value;

【讨论】:

  • 这不是错误的原因。在大多数情况下,分号是可选的。
【解决方案3】:
 var roomName = document.getElementById("roomName").value

通过 var roomName = document.getElementById("roomName").value;

【讨论】:

  • 这不是错误的原因。在大多数情况下,分号是可选的。
  • 这甚至不是语法错误。这只是不好的做法。但它是有效的javascript
猜你喜欢
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多