javascript - 关于JS延时运行某句代码的问题,求大神帮助;
黄舟
黄舟 2017-04-10 17:00:53
[JavaScript讨论组]
  1. 描述你的问题
    如下:

  2. 贴上相关代码
    我的代码中下面这两句,总是有错,我刚开始学又不知道哪里写错了,求大神帮看看我哪里写错了。谢谢哈;

setTimeout("this.parentNode.style.backgroundColor = '#998866';" , 3000 ); //求大神帮看一下我这句代码哪里写错了,老是错误提示Uncaught TypeError: Cannot read property 'style' of undefined这个;谢谢哈

op2_a.setTimeout("offsetParent.className = 'sef3';" ,3000); //还有这句话。谢谢哈。
  1. 以下是我的整个代码



    
        
        
        
        
    
    
        

  • ss隐藏
  • saa隐藏
  • a隐藏
  • sasasa隐藏
  • ss隐藏
  • saa隐藏
  • a隐藏
  • sasasa隐藏
  • 黄舟
    黄舟

    人生最曼妙的风景,竟是内心的淡定与从容!

    全部回复(4)
    PHPz

    可以尝试使用闭包

    Al_1[i].onclick = function(){
        this.parentNode.style.backgroundColor = '#998866';
        var self = this;
        setTimeout(function() {
            self.parentNode.style.backgroundColor = '#998866';
        }, 3000)
    }
    天蓬老师
    setTimeout("this.parentNode.style.backgroundColor = '#998866';" , 3000 );

    setTimeout运行的作用域是全局的(window),所以上面的代码中this就为window。所以实际运行为:

    window.parentNode.style.backgroundColor = '#998866';

    所以就错误了。

    怪我咯
    setTimeout("this.parentNode.style.backgroundColor = '#998866';" , 3000 );

    将字符串传递给setTimeout函数的第1个参数,那么JS将试图执行传入的代码字符串,
    效果同下,函数体中的this指向全局对象,parentNode这个属性是没有的。就会出错

    setTimeout(function(){
        this.parentNode.style.backgroundColor = '#998866';
    } , 3000 );
    op2_a.setTimeout("offsetParent.className = 'sef3';" ,3000); //还有这句话。谢谢哈。

    setTimeout是全局函数,window对象才有这个属性,DOM元素是没有个这个方法的

    怪我咯

    建议你先去看一下js的setTimeout的用法,setTimeout是window级别的,直接p去调用不合适吧,还有set Timeout里面应该是function吧,直接传字符串不合适吧

    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号