javascript意外标记}

javascript意外标记},javascript,jquery,html,dom,web,Javascript,Jquery,Html,Dom,Web,我有一段代码,我在网页上创建了两个链接元素,并向其中添加了一个单击事件: function createNewChat(){ //alert("new chat fired"); var roomName = document.getElementById("roomName").value if (roomName){ resetErrorLog(); $('#createRoom').append('<

我有一段代码,我在网页上创建了两个链接元素,并向其中添加了一个单击事件:

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>";
     }
  }
函数createNewChat(){
//警报(“新聊天已启动”);
var roomName=document.getElementById(“roomName”).value
如果(房间名){
resetErrorLog();
$(“#createRoom”).append(“您想用密码保护这个文件室吗?

”); $('#createRoom')。附加(''); $('#createRoom')。附加(''); } 否则{ document.getElementById(“errorlog”).innerHTML=“房间名称输入框似乎是空的”

”; } }
DOM会正确更新,但是当我单击链接时,我在第2行得到一个意外的标记},它是一个标记。这段代码在文件中要晚得多。helper方法根本没有被解雇,所以我很确定问题出在这段代码上。非常感谢你的帮助

var roomName = document.getElementById("roomName").value
你可能想用一个

var roomName = document.getElementById("roomName").value;
借 var roomName=document.getElementById(“roomName”).value

onclick=“newChatHelper(“yes”)”
是HTML中的一个引用问题

您需要使用
onclick=“newChatHelper('yes')”
——注意函数调用中的单引号

但是,因为您已经在一个单引号中包含了这一点,所以需要对内部单引号进行转义,如下所示:

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

$('#createRoom').append(
  $('<div></div>').append(
    $('<a href="#">yes</a>').click(function(event) {
      newChatHelper("yes");
      event.preventDefault();
    })
  )
);
$('#createRoom')。追加(
$('')。追加(
$('')。单击(函数(事件){
newChatHelper(“是”);
event.preventDefault();
})
)
);

检查链接并查看HTML
onclick=“newChatHelper(“no”)”
变成什么(提示:查看引号)。这不是错误的原因。分号在大多数情况下是可选的。这不是错误的原因。分号在大多数情况下是可选的,这甚至不是语法错误。这只是坏习惯。但这是有效的。我认为它比这更深。单引号将打断外部引号。您可能希望演示如何将单引号嵌入字符串文字。我建议将
\“
作为一个快速修复方法,但这会冒犯我的敏感性:)@slebetman:这无论如何都不会有帮助,因为
\
在HTML中不是转义字符。例如
onclick=“newChatHelper(\“yes\”)“
仍然会产生错误的结果。@FelixKling,我还提供了一个解决方案,可以完全避免转义:)
$('#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();
    })
  )
);