1

我正在尝试运行下面给出的代码(我已对其进行了简化以指出问题)。当我排除src脚本的部分(即省略 JQuery 的源)时,警报将运行良好,但会导致错误Uncaught TypeError: Object #<HTMLImageElement> has no method 'offset'。这是由于未包含 JQuery。但是,当我添加该src部分时(如下所示),我没有收到任何错误或警告,但代码并没有运行到我可以说的范围内。具体来说,没有警报(或其他任何东西)。我猜我只是在如何包含 JQuery 方面犯了一些愚蠢的错误,但我不确定它是什么。有什么建议么?非常感谢!

<script src="/js/jquery-2.0.3.min.js" type="text/javascript" >      
  getPosition = function() {
    var the_source = document.getElementById('the_source');
    var offset = the_source.offset();
    var x_position = e.clientX - offset.left;
    var y_position = e.clientY - offset.top;
    alert(e.clientX - offset.left);
    alert(e.clientY - offset.top);
  }

  initialize = function() {
    alert('check');
    getPosition();
  }      

  setTimeout(initialize, 100);
</script>
4

4 回答 4

5

您不能在一个<script>块中同时拥有“src”属性和内联脚本代码。使用自己的<script>块(没有内嵌内容)导入 jQuery,然后将您的脚本放入另一个块中。

除非您使用严格的 DOCTYPE 进行编码,否则您也不需要“type”属性。

编辑——另外,你正在导入 jQuery(或试图)但没有正确使用它:

var the_source = document.getElementById('the_source');

在导入 jQuery 后,对“getElementById”的调用仍然是一个普通的旧 DOM API 调用。如果你想使用 jQuery API,你必须创建一个 jQuery 对象:

var the_source = $('#the_source');
于 2013-08-14T15:44:06.053 回答
3

src属性仅用于脚本引用,而不是脚本块,您需要这个:

<script src="/js/jquery-2.0.3.min.js" type="text/javascript"></script>

<script type="text/javascript">
    // Your script here
</script>
于 2013-08-14T15:45:30.190 回答
1

您需要在自己的script标签中包含 jQuery。

对于内联脚本,请使用单独的script标签

于 2013-08-14T15:45:54.453 回答
1

您需要将 jquery 和您自己的代码分开。

<script src="/js/jquery-2.0.3.min.js" type="text/javascript" ></script>
<script>    
          getPosition = function() {
            var the_source = document.getElementById('the_source');
            var offset = the_source.offset();
            var x_position = e.clientX - offset.left;
            var y_position = e.clientY - offset.top;
            alert(e.clientX - offset.left);
            alert(e.clientY - offset.top);
          }

          initialize = function() {
            alert('check');
            getPosition();
          }      

          setTimeout(initialize, 100);
</script>
于 2013-08-14T15:45:11.763 回答