【问题标题】:jQuery ready function not working, it never runs [closed]jQuery准备功能不起作用,它永远不会运行[关闭]
【发布时间】:2013-06-03 01:58:44
【问题描述】:

我正在尝试使用 jQuery,但 ready 函数似乎不起作用:

<html>
  <head></head>
  <body>
    <div id="locationdemo">
      <p id="demo">Click the button to get your coordinates:</p>
      <button id="locationButton" onclick="getLocation()">Click me!</button>
    </div>
    <div id="loading" clas="load">
      <p>Acquiring Location</p>
      <img border="0" src="ajax-loader.gif" alt="Loading" width="32" height="16">
    </div>

脚本从这里开始;

<script src="Distance.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
  $(document).ready(function(){
    alert("why isn't this running?");
    $("#loading").hide();
  });
  var x=document.getElementById("demo");
  var retries = 0;
  function getLocation() {
    alert("before check");
    if (navigator.geolocation) {
      var timeoutVal = 6000;//in milliseconds
      var watchid = navigator.geolocation.getCurrentPosition(
        displayPosition,
        displayError,
        { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
      );
    } else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
  function displayPosition(position) {
    var accuracy = position.coords.accuracy;
    var maxAcceptableAccuracy = 300.48//in meters, this is eqaul to 100 feet
    alert("accuracy: "+accuracy);
    if(accuracy > maxAcceptableAccuracy && retries < 10) {
      retries = retries++;
      getLocation();
      return;
    }
    retires = 0;
    x.innerHTML="Latitude: " + position.coords.latitude + 
      "<br>Longitude: " + position.coords.longitude;
  }
  function displayError(error) {
    var errors = {
      1: 'Permission denied',
      2: 'Position unavailable',
      3: 'Request timeout'
    };
    alert("Error: " + errors[error.code]);
  }
  </script>
</body>
</html>

警报(“为什么不运行”);没有运行。我究竟做错了什么?我已经坚持了 2 个小时。

【问题讨论】:

  • 您是在使用 file:// 还是在本地服务器中尝试?
  • 您是否告诉浏览器忽略此页面的更多弹出窗口?
  • 你应该在src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"的url中指定'http://'
  • 如果使用file:// 运行,src=// 将失败。
  • 致所有认为需要src 中的http: 部分的人:省略该方案并不少见,以便可以毫无问题地从http 和@987654330 提供文件@。该方案是自动填充的。正如 Raphael 提到的,如果 HTML 文件以不同的方式提供(例如,通过 file),这将不起作用。

标签: javascript jquery html


【解决方案1】:

我编辑了位置以指向正确的 CDN,并在加载 jQuery 后导入您的 distance.js 脚本文件

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="Distance.js"></script>
<script>
    $(document).ready(function(){
        alert("why isn't this running?");
        $("#loading").hide();

    });


    var x=document.getElementById("demo");
    var retries = 0;

    function getLocation()
    {
      alert("before check");


        if (navigator.geolocation)
        {
              var timeoutVal = 6000;//in milliseconds
              var watchid = navigator.geolocation.getCurrentPosition(
                displayPosition, 
                displayError,
                { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
              );
        }

      else{x.innerHTML="Geolocation is not supported by this browser.";}
    }  
    function displayPosition(position)
    {
        var accuracy = position.coords.accuracy;
        var maxAcceptableAccuracy = 300.48//in meters, this is eqaul to 100 feet
        alert("accuracy: "+accuracy);
        if(accuracy > maxAcceptableAccuracy && retries < 10)
        {
            retries = retries++;
            getLocation();
            return;

        }
        retires = 0;
        x.innerHTML="Latitude: " + position.coords.latitude + 
        "<br>Longitude: " + position.coords.longitude;  
    }

    function displayError(error) {
      var errors = { 
        1: 'Permission denied',
        2: 'Position unavailable',
        3: 'Request timeout'
      };
    alert("Error: " + errors[error.code]);
}

</script>

【讨论】:

  • 感谢工作就像一个魅力,没有意识到我需要 http: before //
【解决方案2】:

试试这个:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            alert("why isn't this running?");
            $("#loading").hide();

        });

    var x=document.getElementById("demo");
    var retries = 0;

    function getLocation()
    {
      alert("before check");


        if (navigator.geolocation)
        {
              var timeoutVal = 6000;//in milliseconds
              var watchid = navigator.geolocation.getCurrentPosition(
                displayPosition, 
                displayError,
                { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
              );
        }

      else{x.innerHTML="Geolocation is not supported by this browser.";}
    }  
    function displayPosition(position)
    {
        var accuracy = position.coords.accuracy;
        var maxAcceptableAccuracy = 300.48//in meters, this is eqaul to 100 feet
        alert("accuracy: "+accuracy);
        if(accuracy > maxAcceptableAccuracy && retries < 10)
        {
            retries = retries++;
            getLocation();
            return;

        }
        retires = 0;
        x.innerHTML="Latitude: " + position.coords.latitude + 
        "<br>Longitude: " + position.coords.longitude;  
    }

    function displayError(error) {
      var errors = { 
        1: 'Permission denied',
        2: 'Position unavailable',
        3: 'Request timeout'
      };
    alert("Error: " + errors[error.code]);
}



</script>
</body>
</html>

【讨论】:

  • 当您复制/粘贴整个代码块(重新格式化后)并更改一行时,它并没有多大帮助......您应该指出什么是错误的,您修复了什么,并且为什么。
  • @jahroy 我在没有其他代码的情况下创建了我的答案,然后我输入了
  • 我将删除我的反对票,但我不明白你刚才所说的任何内容。我的意思是你应该提到你改变了什么以及为什么。否则我们必须仔细阅读这两段代码才能找到更改(您更改了所有格式的事实使得无法区分)。
猜你喜欢
  • 1970-01-01
  • 2016-02-14
  • 2013-12-11
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
相关资源
最近更新 更多