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>

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

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


版权声明:本文为freedomVenly原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。