动态拼接HTML、JS时,经常需要传递对象,比如<input type='button' οnclick='clickme(' + obj + ')';
这个时候,obj是做为字符串来拼接的,而不是做为对象,当obj为数字、字符串时,clickme函数是可以
正确执行的,但是当obj为对象是,这个时候拼接出来的字符串就成了clickme([object Object]),这个时候
就会报JS错误,在不同浏览器下表现也不一样,比如:
SyntaxError: missing ] after element list,
Uncaught SyntaxError: Unexpected identifier
等。
也就是说,动态拼接JS时,不可以直接传递对象, 解决方法:拼装JS时,对象转成JSON字符串再传
就可以解决这个问题,比如:
<input type='button' οnclick='clickme(' + JSON.stringify(obj) + ')';