未定义未捕获的ReferenceError$

Uncaught ReferenceError $ is not defined

本文关键字:ReferenceError 未定义      更新时间:2023-09-26

我对JavaScript非常陌生(几个小时前刚刚开始,正在尝试让脚本正常工作)。我学习了一些W3教程,当我直接将其粘贴到HTML中时,"hello world"代码可以工作,但我的脚本有问题(我也有其他脚本的问题,但我不确定我做错了什么)。

我有这个代码,我想在我的HTML中测试,我复制了HTML,它看起来是一样的,然后我在我的静态文件夹中创建了一个名为edit.js的文件,并将JavaScript复制到其中(完全如图所示)。它不起作用,页面上没有错误,但当我点击它时,什么也没发生。我试图在中粘贴W3"hello world"代码,这很有效,但这个脚本没有。

我试图在Chrome中检查代码,这就是我看到上述错误的地方(在资源选项卡下)。我可以使用Chrome打开js文件,这让我认为js文件是可访问的,指向正确,但我不知道如何使其工作。我使用Jinja2作为我的模板引擎来渲染HTML,在我的头中我有:

<script language="JavaScript" type="text/javascript" src="static/edit.js"></script>

在我的主模板(在所有页面上呈现的模板)中,我有:

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

edit.js:

(即使将它直接放在我想使用它的页面上的脚本标记中也不起作用)

$('#editvalue').click(function(e){$('#storedvalue').hide();$('#altervalue').show();});
$('#savevalue').click(function(e){
   var showNew = $('#changevalue').val();
   $('#altervalue').hide();
   $('#storedvalue').show();
   $('#storedvalue span').text(showNew);
});​

HTML:

(它嵌入在更大的页面中)

    <head>
        <script language="JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
        <script language="JavaScript" type="text/javascript" src="static/edit.js"></script>
    </head>
... my html code..
        <div id="wrapper">
           <div id="container">
              <div id="storedvalue"><span>Hello</span> [<a href="javascript:void(0);" id="editvalue">edit</a>]</div>
              <div id="altervalue" style="display:none;"><input type="text" name="changevalue" id="changevalue" value="Hello"> [<a href="javascript:void(0);" id="savevalue">save</a>]</div>
           </div>
        </div>

我从来没能成功运行W3上没有的JavaScript。我对其他脚本也有同样的问题,尽管我在网上看到人们说他们很适合他们。我需要做些额外的工作吗?

我的两个问题是:

  • 我做错了什么
  • 因为当出现问题时,Javascript似乎不起作用,有没有办法获得错误或实际错误的信息

我读到Uncaught ReferenceError:$没有定义?在过去的一个小时里,我一直在努力解决这个问题,却看不出我的问题。

首先需要放置jQuery脚本标记。

第二,你需要做以下事情之一:

  1. 将您的代码放入此功能:

    $(document).ready(function(){/*CODE HERE*/});
    
  2. 或者像这样:

    $(function(){
        /*CODE HERE*/
    });
    

在使用DOM之前,需要先准备好它。将代码放在对DOM的就绪事件执行的匿名函数中就是实现这一点的方法。

编辑:

$(function(){
   $('#editvalue').click(function(e){$('#storedvalue').hide();$('#altervalue').show();});
   $('#savevalue').click(function(e){
     var showNew = $('#changevalue').val();
     $('#altervalue').hide();
     $('#storedvalue').show();
     $('#storedvalue span').text(showNew);
   });​
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

jQuery的脚本标记应该在自定义javascript之前。

接着是edit.js

<script type="text/javascript" src="static/edit.js"></script>

尝试删除语言属性。。有时对我有用。现在已经过时了。。我认为

您需要先包含jquery,然后才能使用它。