错误:“标识符在数字文字 javascript 之后立即启动”

Error : "identifier starts immediately after numeric literal javascript"

本文关键字:之后 启动 javascript 文字 标识符 数字 错误      更新时间:2023-09-26
$(obj).replaceWith('<a class="fd-tool-li" onclick="javascript:Like(this, @Model.User.HOCODE.ToString(), @Model.CommentHOCODE.ToString());">' +
'<i class="icon-thumbs-up"></i><span> ' +UserCount+ ' Like this</span>'+
'<a name="Unlike"class="fd-tool-li" onclick="javascript:Unlike(this, @Model.User.HOCODE.ToString(), @Model.CommentHOCODE.ToString());">(Unlike?)</a>' +
'</a>');

为什么我会收到此错误?

简化代码以避免引号问题(并提高可读性)。从替换调用中提取 onclick javascript:

$(obj).html('<a class=fd-tool-li onclick="javascript:Like(this, @Model.User.HOCODE.ToString(), @Model.CommentHOCODE.ToString());">' +
    '<i class="icon-thumbs-up"></i><span> ' +1+ ' Like this</span>'+
    '<a name=Unlike class=fd-tool-li>(Unlike?)</a>' +
    '</a>'
);
$(obj).click(function() {
   // things
});

这假设@Model是由某种预编译器定义的,并且不存在于代码中。

如果这真的是您的代码到达浏览器时的样子(而不是在服务器上处理部分代码而浏览器处理不同内容),那么您在@Model.CommentHOCODE.ToString()的地方会出现语法错误。您需要解决此问题。标识符不能以 @ 开头。

相反,如果它是

在服务器端处理并替换为一系列字符,则可能需要在其周围加上引号,如果它真的是一个字符串。

同样,您是否有一个名为 UserCount客户端变量?因为如果没有,并且如果不是在服务器端处理,那也可能是一个问题。

从根本上说,您需要查看该代码并确定服务器端发生的情况以及发送到客户端浏览器的结果是什么,然后确保发送到客户端浏览器的内容是有效的。

我而言,我正在使用UUID来设置一个复杂的变量(某物+ UUID),我做的一个简单的解决方案是:

将"-"替换为",标识符的唯一性保持活动状态。

如果您使用的是 Razor (ASP.net) 而不是这样做:@Model.User.HOCODE.ToString() 尝试使用: @(Model.User.HOCODE.ToString())

问候。