无法识别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代码>
您的HTMLonclick
属性中缺少引号。不要将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问题中字符串转义问题的答案。这是你的答案!