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

时间:2012-06-01 11:09:04

标签: javascript jquery

$(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>');

为什么我收到此错误?

3 个答案:

答案 0 :(得分:1)

简化代码以避免引用问题(并提高可读性)。从你替换call:

中提取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由某种类型的预编译器定义,并且不存在于代码中。

答案 1 :(得分:0)

如果这是你的代码到达浏览器时的样子(而不是它在服务器上处理的部分以及与浏览器不同的部分),那么你有{{1}的语法错误}。你需要解决这个问题。标识符不能以@Model.CommentHOCODE.ToString()开头。

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

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

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

答案 2 :(得分:0)

在我的情况下,我使用UUID来设置一个复杂的变量(某些东西+ UUID),我做的一个简单的解决方案是:

将“ - ”替换为“”,标识符的唯一性保持活跃。

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

问候。