JS点击事件传值问题

心情很差吗 2018-09-05 08:16:33

当点击radio时触发事件,传的值我已经写死了

图二是点击事件的代码,e就是打印传过来的值

图三是打印出来,为什么它会把整个Input标签打印出来,意思就是e的值是整个标签?

第一次碰到这种奇怪的问题,有没有大神解惑啊?
...全文
575 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Logerlink 2018-09-06
  • 打赏
  • 举报
回复
我觉着应该是字符串拼接的问题,像这样的拼接建议用es6的字符串模板 ``

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function(){
let id = 'lol';
var str = `<tr>
<td><input type="radio" id="${id}" name="mmmm" onclick="doSome('11111')"></td>
</tr>`;
document.getElementById('dataRows').innerHTML = str;
}
function doSome(e){
console.log(e)
}
</script>
</head>
<body>
<table>
<tbody id="dataRows">
</tbody>
</table>
</body>
</html>

讨厌走开啦 2018-09-06
  • 打赏
  • 举报
回复
引用 2 楼 qq_38292982 的回复:
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'

你在最外层已经用了双引号用来拼接字符串,单引号用来区别attribute的值,所以attribute值里面的引号必须转义,写成\"。卧槽,1楼不是已经写出来了,你抄都没抄对啊,兄弟。
風灬雲 2018-09-06
  • 打赏
  • 举报
回复
不确定的话先把得到的字符串打印出来看一下,这种东西细心就能找到解决办法,没什么高深的知识
心情很差吗 2018-09-06
  • 打赏
  • 举报
回复
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'
心情很差吗 2018-09-06
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
[quote=引用 6 楼 qq_38292982 的回复:]
[quote=引用 4 楼 lqlqlq007 的回复:]
[quote=引用 2 楼 qq_38292982 的回复:]
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'

你在最外层已经用了双引号用来拼接字符串,单引号用来区别attribute的值,所以attribute值里面的引号必须转义,写成\"。卧槽,1楼不是已经写出来了,你抄都没抄对啊,兄弟。[/quote]

不是我没抄啊,我是转义了,写成这样子onclick='origin_app_sno_change(\"+originAppSno[prop].app_sno+\")',但是打印的结果是+originAppSno[prop].app_sno+这个字符串,并没有动态的获取值啊,[/quote]

"<input ...... onclick='origin_app_sno_change(\""+originAppSno[prop].app_sno+"\")' ... >"
[/quote]

可以,问题解决,谢谢大佬
讨厌走开啦 2018-09-06
  • 打赏
  • 举报
回复
引用 6 楼 qq_38292982 的回复:
[quote=引用 4 楼 lqlqlq007 的回复:]
[quote=引用 2 楼 qq_38292982 的回复:]
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'

你在最外层已经用了双引号用来拼接字符串,单引号用来区别attribute的值,所以attribute值里面的引号必须转义,写成\"。卧槽,1楼不是已经写出来了,你抄都没抄对啊,兄弟。[/quote]

不是我没抄啊,我是转义了,写成这样子onclick='origin_app_sno_change(\"+originAppSno[prop].app_sno+\")',但是打印的结果是+originAppSno[prop].app_sno+这个字符串,并没有动态的获取值啊,[/quote]

1楼的例子里QA123是个字符串,但是你的originAppSno[prop].app_sno不是,所以按你当前的写法会把originAppSno[prop].app_sno当成字符串处理,当然不会动态获取值,如果是变量的话还要用""包住。
天际的海浪 2018-09-06
  • 打赏
  • 举报
回复
引用 6 楼 qq_38292982 的回复:
[quote=引用 4 楼 lqlqlq007 的回复:]
[quote=引用 2 楼 qq_38292982 的回复:]
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'

你在最外层已经用了双引号用来拼接字符串,单引号用来区别attribute的值,所以attribute值里面的引号必须转义,写成\"。卧槽,1楼不是已经写出来了,你抄都没抄对啊,兄弟。[/quote]

不是我没抄啊,我是转义了,写成这样子onclick='origin_app_sno_change(\"+originAppSno[prop].app_sno+\")',但是打印的结果是+originAppSno[prop].app_sno+这个字符串,并没有动态的获取值啊,[/quote]

"<input ...... onclick='origin_app_sno_change(\""+originAppSno[prop].app_sno+"\")' ... >"
心情很差吗 2018-09-06
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
你要传字符串的值应该用引号把值包起来,如:
var str = "<input type='radio' id='QA123' onclick='fun(\"QA123\")' />";
如果不加引号,fun(QA123)这样QA123会被认做是变量。
而在一部分浏览器中页面元素的id恰恰可以被直接当做全局变量来使用。


大佬看下我在6楼的回复该如何解决呀
心情很差吗 2018-09-06
  • 打赏
  • 举报
回复
引用 4 楼 lqlqlq007 的回复:
[quote=引用 2 楼 qq_38292982 的回复:]
那像这种呢,动态获取值,也加了引号,但是还是把Input标签打印出来,
onclick='origin_app_sno_change("+originAppSno[prop].app_sno+")'

你在最外层已经用了双引号用来拼接字符串,单引号用来区别attribute的值,所以attribute值里面的引号必须转义,写成\"。卧槽,1楼不是已经写出来了,你抄都没抄对啊,兄弟。[/quote]

不是我没抄啊,我是转义了,写成这样子onclick='origin_app_sno_change(\"+originAppSno[prop].app_sno+\")',但是打印的结果是+originAppSno[prop].app_sno+这个字符串,并没有动态的获取值啊,
天际的海浪 2018-09-06
  • 打赏
  • 举报
回复
你要传字符串的值应该用引号把值包起来,如:
var str = "<input type='radio' id='QA123' onclick='fun(\"QA123\")' />";
如果不加引号,fun(QA123)这样QA123会被认做是变量。
而在一部分浏览器中页面元素的id恰恰可以被直接当做全局变量来使用。

87,917

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧