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对象参数/

赞赏

微信赞赏支付宝赞赏

windows主分区与逻辑分区的问题(备忘)
dingtalk-use-spl-autoload-register
docker安装mindoc知识管理系统wiki