js 拼接HTML时 onclick方法和传参报错[onject Object] 和 unexpected end of input`

Vue js拼接onclick事件

  • [1.onclick 方法函数找不到](#1.onclick 方法函数找不到)
  • 2.方法中传参
    • [2.1 int 类型传参(`直接传参`)](#2.1 int 类型传参(直接传参))
    • [2.2 字符串类型(`需要加引号`)](#2.2 字符串类型(需要加引号))
    • [2.3 对象(`对象是不能直接拼接的。拼接的必须是字符串。因此需要将对象转成字符串。`)](#2.3 对象(对象是不能直接拼接的。拼接的必须是字符串。因此需要将对象转成字符串。))

1.onclick 方法函数找不到

我是拼接的表格,点击的<td>标签;

  1. 拼接html 并增加onclick事件
javascript 复制代码
	//实际列值填充
tablHtml += `<td
				οnclick="previewNvrVideo(${data})">
				${columnItem?.actual}
			</td>`;

2.页面刚进去 注册点击函数(重要)

bash 复制代码
mounted() {
	//模板参数传参
	const _this = this;
	window.previewNvrVideo = (channelNum) => {
		_this.nvrPreview(channelNum);
	};
}

3.js 中 写点击函数内容

javascript 复制代码
nvrPreview(data) {
	//点击之后 实现的逻辑
},

2.方法中传参

2.1 int 类型传参(直接传参

javascript 复制代码
tablHtml += `<td οnclick="previewNvrVideo(1)">
				${columnItem?.actual}
			</td>`;

2.2 字符串类型(需要加引号

1.使用转义字符

javascript 复制代码
tablHtml += `<td οnclick="previewNvrVideo(\'${data}\')"
				${columnItem?.actual}
			</td>`;

注意:JS中写法:str2 = '<div onclick="test2(\''+string+'\')">33</div>'

2.使用&quot;&quot;是双引号,单引号为',但是IE不支持)

javascript 复制代码
tablHtml += `<td οnclick="previewNvrVideo(&quot;${data}&quot;)"
				${columnItem?.actual}
			</td>`;

2.3 对象(对象是不能直接拼接的。拼接的必须是字符串。因此需要将对象转成字符串。

报错信息:如果直接使用对象。触发事件时会得到([onject Object])。会引起Uncaught SyntaxError: Unexpected identifier错误

  1. 将对象拆开,只穿需要传递的参数(参考第二点,需要转义)
  2. 设置全局变量
  3. 使用JSON.stringify()将对象转换成json字符串,但是依然会报错unexpected end of input
    该错误是因为json字符串的双引号和onclick的双引号冲突,需要将json字符串转成单引号字符串。

JSON.stringify(data).replace(/\"/g,"'");

相关推荐
徐小夕17 分钟前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
PBitW20 分钟前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
像我这样帅的人丶你还41 分钟前
Java 后端详解(四):分页与搜索
java·javascript·后端
摸着石头过河的石头1 小时前
前端多仓库管理:从混乱到有序的进化之路
前端
星栈1 小时前
写 Dioxus Demo 不难,难的是把它写成项目
前端·rust·前端框架
labixiong1 小时前
还原一个完整符合规范的 Promise(二)
前端·javascript
时光足迹1 小时前
腾讯云 TRTC UniApp SDK 从入门到上线
前端·vue.js·uni-app
时光足迹1 小时前
uni-app 里把加密视频嵌入页面播放?我分析了 4 种方案,只有 1 种接近完美
前端·vue.js·uni-app
To_OC2 小时前
万字解析《JS 语言精粹》之第五章:继承 5 大核心精髓(JS 原型核心)
前端·javascript·代码规范
时光足迹2 小时前
极光推送全攻略(上):被iOS证书折磨了三天,我写了一份前端也能看懂的避坑指南
前端·ios·uni-app