无法识别javascript onclick函数中传递的带有空格的字符串

无法识别javascript onclick函数中传递的带有空格的字符串,javascript,html,jquery,Javascript,Html,Jquery,下面是代码片段 var docd = {message: 'hi'}; chatHTML += `<div class="message"> ${docd.message} </div> <i class="fas fa-reply" onclick=expand('${docd.message}')></i> </div>`; $(".message-c

下面是代码片段

var docd = {message: 'hi'};

chatHTML += `<div class="message"> ${docd.message} </div>
     <i class="fas fa-reply" onclick=expand('${docd.message}')></i>
         </div>`;

$(".message-container").html(chatHTML);

function expand(message,)
{
console.log(message);
}
var docd={message:'hi'};
chatHTML+=`${docd.message}
`;
$(“.message container”).html(chatHTML);
函数展开(消息,)
{
控制台日志(消息);
}
所以上面的代码工作得很好

现在,如果我将变量值更改为

var docd={消息:“你好,你好”};//在中间添加空格

现在,当调用
onclick
事件时,我得到一个错误

意外或无效的令牌


是因为我传递的第二个字符串有空格吗?或者还有其他问题吗?如何解决这个问题?感谢您的帮助。

您缺少属性
onclick
onclick=“expand('${docd.message}')”
的值周围的引号,而且
i
元素中没有文本,所以我只添加了“test”。我看不出缺少空格的问题

var docd={
留言:“你好”
};
var chatHTML=`${docd.message}
测试
`;
$(“.message container”).html(chatHTML);
函数展开(消息,){
控制台日志(消息);
}

onclick在函数和函数参数周围缺少双引号和单引号

标记中,更改以下内容:

onclick=expand('${docd.message}')
为此:

onclick="expand('${docd.message}')"
检查并运行下面的代码片段,以获取上述更正代码的实例(Vanilla JS版本):

函数展开(消息){
控制台日志(消息);
}
让chatHTML='';
var docd={message:'你好,你好'};
chatHTML+=`${docd.message}
点击我
`;
document.querySelector('.someElement').innerHTML+=chatHTML

您的HTML
onclick
属性中缺少引号。不要将HTML构建为字符串,而是考虑使用JavaScript链接处理程序的jQuery方法:

var docd={message:'hi there'};
$(“.message container”).append(
$(“”).addClass(“消息”).text(docd.message).append(
$(“”).addClass(“fas fa reply”)。单击(()=>展开(docd.message))
)
);
函数展开(消息,){
控制台日志(消息);
}
.fa回复:之前{
内容:“⮪"
}


尝试使用`(backtick)代替`
onclick=expand('${docd.message})
必须是
onclick=expand('${docd.message}')
代替。在这里转义和使用变量值代替变量本身存在更大的问题。`
expand('${docd.message}')会发生什么情况
`当消息包含一个引号时,
”?这会产生什么结果?同样的问题@chrwahl@julien.giband说得好。答案已更新。这是唯一解决OP问题中字符串转义问题的答案。这是你的答案!