有个未采纳的「潇潇雨歇」的答案,也有用,只是我现在还不知道let的具体用法。在此表示歉意,我也好想采纳两个。
结果肯定是click button1 alert(3)click button2 alert(3)
怎么修改代码使得click button1 alert(1)click button2 alert(2)
感觉这个问题跟settimeout的闭包经典问题有点像,但是我又想不到什么解决办法。
求指点。
function myclick(i){ return function(){ alert(i) }
第二个参数传myclick(i)
把参数保存在每个button元素的属性里。或者用let
<button id='myButton1' data-info='abc'></button> 点击按钮后,获得button的属性data-info中的属性
jquery一般来说就是操作DOM,渲染的时候拼接在dom上一般是data-*的格式,然后获取出来再用$(this).attr(key)
将var 改为 let 即可
window.onload = function () { for (let i = 1; i < 3; i++) { document.getElementById('myButton' + i) .addEventListener('click', () => { myClick(i) }) } }
第二个参数传myclick(i)
把参数保存在每个button元素的属性里。
或者用let
<button id='myButton1' data-info='abc'></button> 点击按钮后,获得button的属性data-info中的属性
jquery一般来说就是操作DOM,渲染的时候拼接在dom上一般是data-*的格式,然后获取出来再用$(this).attr(key)
将var 改为 let 即可