JavaScript传参时类型错误Uncaught ReferenceError js传递的参数未定义

上次写代码时碰到一个类型错误问题,在数据传参中浏览器报了以下这个错误:


这里写图片描述

一开始还以为是不能不能传递中文的原因,试验了英文结果也是一样的。
后来发现其实是在传参的过程中字符被当成是变量了,所以才会报出未定义的错误。


做了一个简单版的代码,有需要的朋友可以借鉴下


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>

<div id="d1"></div>


<script>
    var json=[
        {id: 1, num: "中文"},
        {id: 2, num: "english"}
        ];

    var html="";

	var content;    //先在循环外面声明一个需要拿来存值的变量;
	
    for(var i=0;i<2;i++){
//        ECMAScript 6 语法  不兼容IE9及以下
//        html+=`<!--<button onclick="adc('${json[i].num}')">测试</button>-->`

//        兼容性较高
//        html+="<button onclick=adc('"+json[i].num+"')>测试</button>";

	//或者  把需要传递的值提前声明 并 转换一下,
		content='"中文字符"'; 		//最外面是单引号,里面套着双引号,这个要跟下面事件的单双引号配合使用;
		html+="<button onclick=adc("+content+")>测试</button>";
    }

    d1.innerHTML+=html;

    function adc(c) {
        console.log(c);
    }

</script>
</body>
</html>
其实从理论上理解比较简单,既然字符串是被当做变量传递,那么我们就直接把这个传递的“变量”改成字符串就可以了

就酱~~~
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值