HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法

来源:互联网 发布:深圳淘宝托管 编辑:程序博客网 时间:2024/06/05 14:46

在HTML 拼接中,有时会用到 onclick 事件绑定函数,并要其中传递参数;简单的参数不用说,但如果是一个对象的话,就会出现报错!

解决方法:

将对象转为 json ,再进行传递(HTML不能直接传递对象);

备注:

区分 “js对象” 和 “json ” :js 在接受到json 时能自动转化为js 对象;而例如HTML 中函数传递时,对象的传递只能转为json 来传!


参考如下:

js中写html代码(onclick参数中带有json对象)

  • 当你传进去的是字符串的时候: 
    要带有引号才可以,不然是会报错的。

  • 当参数是 json 对象时: 
    用拼接字符串的方式构建html,只能拼接字符串,对象是没办法拼接的。 
    当进去的是对象时候,当你触发事件的时候,你将得到的是([object Object]) 
    这里[object Object]会引起 Uncaught SyntaxError: Unexpected identifier 
    在这里还会遇到一个问题就是 
    unexpected end of input 这个错误是由于带的json字符串。它的双引号与onclick控件的双引号 
    起冲突了,解决方法,将json字符串的双引号转换成单引号就行了,

单引号、双引号互换

解决方法: 
(1)将row转换成json,拼接进去,后面在函数里面再转换回来。 
(2)拆开row,把row的多个属性逐一作为参数传递给函数。 
(3)保存row为全局,传递row的凭证给函数,函数拿着凭证去全局取row对象

js 单引号替换成双引号,双引号替换成单引号 操作

1.双引号替换成单引号

[javascript] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. var _adrobj = JSON.stringify(address).replace(/\"/g,"'");  
ps:
[javascript] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. var a = {a:1,b:2};  
  2. JSON.stringify(a)====>"{"a":1,"b":2}"  
2.单引号替换成双引号
[javascript] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. var _nstr = _adrdata.replace(/'/g, '"');  
ps:

[javascript] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. var json = JSON.parse(_nstr);  
  2.                 if (json.storeDelivery == 0) {  
  3.                     msgBox($.msg.OutDistributeAddress);  
  4.                     return;  
  5.                 }  
[javascript] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. function escapeHTML(a) {  
  2.     return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/ /g, " ").replace(/"/g, """).replace(/'/g, "'")  
  3. }  

0 0
原创粉丝点击