错误例子:
var info='测试'
var node = $('<dd><a href="javascript:void(0);" onclick="alert("' + info + '")">' + info + '</a></dd>');
$('#messageBox').append(node);
报错结果:SyntaxError: expected expression, got '}'
错误思路:
按照左右匹配原则进行单双引号的匹配,alert(info)则会相应的提示出info信息。
在浏览器中解析的源码:
<a href="javascript:void(0);" onclick="alert(" 1:1班:王渊老师:发布:61作业")"="">1:1班:王渊老师:发布:61作业</a>
解释:很明显看出οnclick="alert(" 1:1班:王渊老师:发布:61作业")"=""出现了异常现象
正确例子:
var info='测试'
var node = $('<dd><a href="javascript:void(0);" onclick="alert(\'' + info + '\')">' + info + '</a></dd>');
$('#messageBox').append(node);
解释:alert()方法内为字符串,所以得用引号'<dd><a href="javascript:void(0);" οnclick="alert(\'' 为左半部分,'\')">' + info + '</a></dd>'为右半部分,中间为info传入变量。
<a href="javascript:void(0);" onclick="alert('1:1班:王渊老师:发布:62作业')">1:1班:王渊老师:发布:62作业</a>
成功的解析出来 。两点需要注意:1.alert()里面需要字符串和常量,引入的字符串值,在传入的时候进行转义拼接。2.在字符拼接的时候,如果出现单双引号混乱的时候,一定要进行转义,否则会报出各种匹配不全的错误。