onclick触发函数直接传入json对象参数
一、在html的button按钮中使用onclick触发函数,open_win函数所需三个参数为(json对象,数字1,数字2)
1、将json对象以字符串的格式列出 2、在给函数传参的时候JSON.parse(json字符串),可以转化为json对象 注意:需要引用jquery <button type="button" onclick='open_win(JSON.parse("{\"baidu\":\"https://www.baidu.com\"}"),1,1);' >打开百度模态窗口[传入json对象]</button>
二、在script语句段中以回写html的方式中有拼接onclick触发函数的语句(来自网络,本人未测验)
1.先JSON.stringify(json) //将json对象转换为json字符串 2.将双引号变成单引号replace(/\"/g,"'") 3.将括号里的单引号除掉 4.function 直接获取到json对象,且不需要evel <script> //需要引用jquery var json_s='{ "baidu":"https://www.baidu.com", "ranjuan":"https://ranjuan.cn" }';//直接申明一个json对象 var btn=''; btn += '<button type="button" οnclick="open_win('+JSON.stringify(json_s).replace(/\"/g,"'")+',1,1)" >打开百度模态窗口[传入json字符串]</button>'; btn += '<button type="button" οnclick="open_win('+json_s+',1,1)" >打开百度模态窗口[传入json对象]</button>'; <script>
三、直接修改onclick触发的函数,判断传入的参数是不是对象,如果不是对象就将其当成json字符串处理(如果函数内主要需要的是json字符串那么如果传入的是对象就使用JSON.stringify(obj); 将json对象转换为json字符串,如果是json字符串那么就不操作)
<script> function open_win(get_url_str,num1,num2){//get_url_str 可以是json对象或json字符串 //alert(JSON.stringify(get_url)); //alert(get_url_str); if($.isPlainObject(get_url_str)){//判断是不是对象属性 var get_url=get_url_str; }else{ var get_url=JSON.parse(get_url_str);//字符则转换为json对象 } var strr= JSON.stringify(get_url); var get_url_new= JSON.parse(strr);//这个操作主要是将get_url_new与get_url 区分开来,方便单独操作这两个对象。后面说明。 } </script>
在js中如果是普通的数字,字符串给变量赋值的时候是给分配新内存的,但是如果是对象的话,被赋值的对象变量与赋值的对象变量是共享内存栈的?!如果直接以var get_url_new=get_url来赋值的话,如果你在get_url中删除一个元素后,你会发现get_url_new也发生了变化!
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/onclick触发函数直接传入json对象参数/
赞赏
微信赞赏
支付宝赞赏
发表评论