在写代码的时候,有时候需要将html拼成串,追加到相应的元素上,这个拼的html,有时候还要带上javascript的事件。这里面一个传参数的问题,有点想不明白。下面我详细记录一下:
//这是jqgrid里面,特殊表格的自定义显示
function customFmatter(cellvalue, options, rowObject){
// rowObject - 当前cell所在row的值,如{ id=1, name="name1", price=123.1, ...}
console.log(rowObject);
return "<button onclick=\"deleteData(\""+rowObject+"\"s)\">删除</buttion> "
}
function deleteData(obj){
console.log(obj); //这里的obj就不是上一个方法里面的obj了。
}
这种情况下,传递Object不可以这样拼吗? 我试着改成JSON.stringify(rowObject)以串的形式传给deleteData方法,但是因为这个对象 也是有双引号,所以这样弄,就会报
Uncaught SyntaxError: Unexpected token ILLEGAL
总结一下,应该是两个问题: 1.在dom事件中,传递object会有什么特殊的规则吗? 2.对于传递的数据中,有可能出现的特殊字符,如果避免?
你把
rowObject
直接与字符串相加,rowObject
被调用toString()
方法转换成字符串[object Object]
。于是……你懂了?你可以用
JSON.stringify
把一个类字典对象转换成字符串来传递,然后在函数内部再使用JSON.parse
来解析。这样等于传了一个字符串进去