javascript: 字符串拼接有问题

时间:2023-03-09 00:17:44
javascript: 字符串拼接有问题

点击某个链接,出现js错误:Uncaught SyntaxError: Unexpected token ILLEGAL

原因:

$str .= sprintf('&nbsp&nbsp<a href="javascript:void(0);" onclick="modifyEssBrief(%s);">编辑</a>', $val['_id']);

点击编辑链接,触发modifyEssBrief的js函数。

其中的html代码是:

<a href="javascript:void(0);" onclick="modifyEssBrief(52ddeea90114e68d36000000);">编辑</a>

出现JS错误提示:Uncaught SyntaxError: Unexpected token ILLEGAL

原因是,js能够判断出modifyEssBrief是个函数,函数的参数为 52ddeea90114e68d36000000

js会将这一串字符串解释成为变量,那么变量是不允许以数字开头的,那么就会报出语法错误来。

做个实验可验证:

function a(b){alert(b);}
a(01ttt)

在console下运行这段js,会报出错误:SyntaxError: Unexpected token ILLEGAL

与猜测一致,可定位问题原因。

修复:

$str .= sprintf('&nbsp&nbsp<a href="javascript:void(0);" onclick="modifyEssBrief(\'%s\');">编辑</a>', $val['_id']);

谨记:

在模板用php输出js函数的变量时,一定要加引号来明确标记此次输出是字符串,而不是变量。