添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
for ( i = 1 ; i < 11 ; i ++ ) { a = document . createElement ( 'a' ) ; a . innerHTML = i + '<br>' ; a . addEventListener ( 'click' , function ( e ) { // 阻止默认行为 e . preventDefault ( ) ; alert ( i ) } ) ; document . body . appendChild ( a ) ;

方法一:改变i的作用域为块级作用域

let a;
//改变i的作用域为块级作用域
for (let i = 1; i < 11; i++) {
    a = document.createElement('a');
    a.innerHTML = i + '<br>';
    a.addEventListener('click', function(e) {
        // 阻止默认行为
        e.preventDefault();
        alert(i)
    });
    document.body.appendChild(a);

方法二:利用闭包,立即执行函数

var a;
for (var i = 1; i < 11; i++) {
    (function(i) {
        a = document.createElement('a');
        a.innerHTML = i + '<br>';
        a.addEventListener('click', function(e) {
            // 阻止默认行为
            e.preventDefault();
            alert(i)
        });
        document.body.appendChild(a);
    })(i);

如若是点击ul列表下的li弹出对应序号,还可以使用事件委托方法。

创建10个a标签,点击弹出相应1-10的序号错误做法:弹出均为11,当触发事件时,for循环已经结束,i为11let i, a;for (i = 1; i &lt; 11; i++) { a = document.createElement('a'); a.innerHTML = i + '&lt;br&gt;'; a.addEventListener('click', function(e) { // 阻止默认行为 e.preventDefau
for (let i = 1; i <= 10; i++) { let a = document.createElement('a') a.innerHTML = i + '<br>' document.body.appendChild(a) a.addEventListener('click', functio...
for (var i = 0; i < 10; i++) { var aObj = document.createElement('a') aObj.innerText = 'a标签' + i aObj.onclick = (function (i) { return function () { alert(i) })(i) document.body.appendChild(aObj) 利用块级作用域的方式 for ( a = document.createElement('a') a.innerHTML = i + '<br>' a.addEventListener('click',function(e){ e.preventDefault() alert(i) document.body.appendChild(a) //此时点击所有的<a>弹出的数字都为10 let a var a = document.createElement('a') a.innerHTML = i + '<br>' a.addEventListener('click', function (e) { const a = document.createElement('a'); a.innerHTML = i+'<br>'; a.addEventListener('click',function(e) { e.preventDefault(); alert(i); document.body.appendChild(a) timer = setTimeout(() => { // apply函数会执行fn函数,并改变this指向,此时this:谁调用就指向谁 -> 这里为input fn.apply(this, arguments) // 执行完后,清空定时器 timer = null }, delay) 改变this指向这个有问题吧,箭头函数的this指向是不可变的