简体   繁体   中英

why javascript works on my website, but not locally

I have a JavaScript code that I got from the site: http://www.micahcarrick.com/change-image-with-jquery.html I only modified the name of the images as to use .png files I have. The issue is if I open this in a web browser locally, then when I click on one of thumbnails called django.gif I am directed to the actual image rather then the new image replacing the other. However, if I put this .html script on a Godaddy.com website and go to it with the same web browser it does work correctly just like the original site: http://www.micahcarrick.com/code/jquery-image-swap/index.html . I notice that at the site I got this code from the author mentions that "The thumbnails are links to full size versions of the images. If a user does not have JavaScript, the links still go to the large image." Does this mean I don't have Java Script? I can run other simple JavaScript codes locally. Why does this work when I put it on a site, but does not work when testing locally, even when using the exact same web browser? Here is the code:

<!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">
<head>
  <title>Example: Change Image with jQuery</title>
  <style type="text/css">
    body { width: 600px; margin: auto; }
    #imageWrap { 
        width: 640px; 
        height: 420px; 
        background: url('ajax-loader.gif') center center no-repeat; 
    }
  </style>
  <script type="text/javascript" 
    src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  <script type="text/javascript">
    $(document).ready(function() {
        $('.thumbnail').live("click", function() {
            $('#mainImage').hide();
            $('#imageWrap').css('background-image', "url('ajax-loader.gif')");
            var i = $('<img />').attr('src',this.href).load(function() {
                $('#mainImage').attr('src', i.attr('src'));
                $('#imageWrap').css('background-image', 'none');
                $('#mainImage').fadeIn();
            });
            return false; 
        });
    });
  </script>
</head>
<body>
  <h1>Example: Change Image with jQuery</h1>
  <p>
    Main image is replaced using jQuery when a thumbnail is clicked. See full 
    description at <a 
    href="http://www.micahcarrick.com/change-image-with-jquery.html">Change 
    Image with jQuery</a>
  </p>

  <a href="bidu.png" class="thumbnail"><img src="django.gif" 
    alt="Image 1"/></a>
  <a href="athex.png" class="thumbnail"><img src="django.gif" 
    alt="Thumbnail 2"/></a>

  <div id="imageWrap">
    <img src="bidu.png" alt="Main Image" id="mainImage"/>
  </div>

</body>
</html>

Thank you, Tom

This line right here is what's causing your issues:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

The "//" before the URL tells the browser to use the same protocol as the page is, and when running locally, the protocol is going to be "file:" which the browser will use to look into your local drive to find the jquery library (which it won't find, thus breaking the page). To fix this, prepend "http:" or "https:" to the URL so it looks like

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

I see two problems.

1. Your script tag src attribute for jQuery will not locate the correct resource. Running locally, this syntax ( //ajax... ) will resolve as file:///ajax.googleapis.com/... , which is not where jQuery is. Try putting a http:// or https:// in front of it.

2. You're using a deprecated jQuery function. .live() is not in version 1.6.2 - you need to use .on() instead, like so:

$(".thumbnail").on("click",function() { ... });

That should work.

Hope this helps.

更改脚本标签的src以包括http:协议

 src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM