今天写的JavaScript中偶然出现了这样的问题
当用户名为英文或数字时,单击修改按钮,js函数可以执行,但当用户名为中文时,函数不执行,错误的原因在于,当将用户名作为参数传递时(且其又为中文时),要加引号
<span style="font-size:18px;"> var userinfo=result;
var datas = eval('(' + userinfo + ')');
var userinfo="";
var userno="";
var username="";
for(i=0;i<datas.length;i++){
userno="'"+datas[i].userno+"'";
username="'"+datas[i].username+"'";
alert(username);
userinfo=userinfo+"<tr><td align='left'>"+datas[i].userno+" </td><td align='left'>"
+datas[i].username+"</td><td align='right'> <input type='button' value='删除' style='cursor:pointer' οnclick='f2("+datas[i].userno+");'>"
+"<input type='button' value='修改' οnclick='f3("+userno+","+username+");' style='cursor:pointer'>"
+"<input type='button' value='添加' οnclick='f2();' style='cursor:pointer'></td></tr></br>";
alert(userinfo);
}</span>
先将参数datas[i].userno和datas[i].username分别赋值给userno和username两个变量,可随即又出现了 “Uncaught SyntaxError: Unexpected token }提示第二行<html>出错”
这样的错误提示,问题的原因在于单引号的用法出错,注意代码"<input type='button' value='修改' οnclick='f3("+userno+","+username+");' style='cursor:pointer'>"
οnclick='f3(userno,username)'事件本身带了单引号,而两个变量同样带了单引号,造成语句解释不通,删除掉外边的单引号即可。
即:
"<input type='button' value='修改' οnclick=f3("+userno+","+username+"); style='cursor:pointer'>"