当前位置:   article > 正文

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

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

1.onclick 方法函数找不到

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

  1. 拼接html 并增加onclick事件
	//实际列值填充
tablHtml += `<td
				οnclick="previewNvrVideo(${data})">
				${columnItem?.actual}
			</td>`;
  • 1
  • 2
  • 3
  • 4
  • 5

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

mounted() {
	//模板参数传参
	const _this = this;
	window.previewNvrVideo = (channelNum) => {
		_this.nvrPreview(channelNum);
	};
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.js 中 写点击函数内容

nvrPreview(data) {
	//点击之后 实现的逻辑
},
  • 1
  • 2
  • 3

2.方法中传参

2.1 int 类型传参(直接传参

tablHtml += `<td οnclick="previewNvrVideo(1)">
				${columnItem?.actual}
			</td>`;
  • 1
  • 2
  • 3

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

1.使用转义字符

tablHtml += `<td οnclick="previewNvrVideo(\'${data}\')"
				${columnItem?.actual}
			</td>`;
  • 1
  • 2
  • 3

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

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

tablHtml += `<td οnclick="previewNvrVideo(&quot;${data}&quot;)"
				${columnItem?.actual}
			</td>`;
  • 1
  • 2
  • 3

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,"'");

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/360134
推荐阅读
相关标签
  

闽ICP备14008679号