代码之家  ›  专栏  ›  技术社区  ›  CodyBugstein

Javascript函数在JSFiddle中工作,但在我的本地副本上不工作

  •  0
  • CodyBugstein  · 技术社区  · 11 年前

    我正在尝试用Javascript制作一个简单的渐变效果。

    当我在我的文本编辑器+谷歌Chrome中尝试它时,它不起作用,所以我将它复制到JSFiddle中,它起了作用!

    http://jsfiddle.net/yLFFt/

    然而,我无法弄清楚JSFiddle中的哪些内容是正确的,而在我的原始副本中是不正确的。

    我将在Notepad++中发布代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <html>
        <head>
            <title>My Site</title>
            <link rel="stylesheet" type="text/css" href="style2.css">
            </style>
            <script>
              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
              })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
    
              ga('create', 'UA-08000000-1', 'mysite.com');
              ga('send', 'pageview');
    
            </script>
            <script type="text/javascript" src="js/jquery_1.4.2.js"></script>
            <script type="text/javascript" src="js/flashing_logos.js"></script>
        </head>
        <body>
            <div id="background_logo">
                <img src="http://drivesmartbc.ca/sites/default/files/images/smiley%20face.thumbnail.jpg">
            </div>
            <div id="logo">
                <img src="https://lh4.googleusercontent.com/-b86bjfIcDMk/TXpUmwBK_FI/AAAAAAAAARY/ws-ypr2P39I/s200/9+smiley+face.jpg">
            </div>
            <div id="signup">
                <p id="instruction"> Get on board! </br> Enter your email to receive updates:</p>
                <script type="text/javascript" src="js/form-validation.js"></script>
                <form id="emailForm" action='#' method="post">
                    <input name="email"  id="email" type="text" />
                    <input type="button" value="Submit" name="submit" id="submit" />
                </form>
                <p id="success" class="success">Thanks - we'll keep in touch!</p>
                <p id="error" class="warning">There was an error</p>
            </div>
        </body>
    
    
    </html>
    

    我的Javascript看起来像这样:

    function fade(element) {
        var op = 1;  // initial opacity
        var timer = setInterval(function () {
            if (op <= 0.1){
                clearInterval(timer);
                element.style.display = 'none';
            }
            element.style.opacity = op;
            element.style.filter = 'alpha(opacity=' + op * 100 + ")";
            op -= op * 0.1;
        }, 50);
    }
    fade(document.getElementById('background_logo'));
    
    1 回复  |  直到 11 年前
        1
  •  2
  •   Community CDub    8 年前

    你在打电话 document.getElementById('background_logo') 中的脚本 head 并且您不是从稍后调用的函数执行此操作。

    在解析正文之前,元素将不存在。

    在结束后将脚本移动到 <div id="background_logo"> (例如,就在之前 </body> )或者将其包装在一个函数中。您可以在DOM ready或Load上调用它(这是JSFiddle默认所做的)。

    另请参见 Why does jQuery or a DOM method such as getElementById not find the element? .