2016-06-09 34 views
0

我正在创建网站,我正在使用NodeJS服务器。在我的公共文件夹中,我有一个名为website.js的脚本,它具有jQuery代码,可以在单击h1时提供console.log。 (代码如下)。但是当我点击浏览器中的h1时,它不起作用。该文件加载正常,没有404错误,我的CSS样式表工作正常。EJS文件无法识别JavaScript文件代码

进一步测试:我做了一个简单的测试,看它是否会在我调用变量(测试代码如下)时返回文本,它以“”(两个引号)作为响应,因此它不能识别它。

//Test code 
var xyz = $("#testh1").text(); 
//jQuery Code 
$("#testh1").on("click", function(){ 
    console.log("Clicked"); 
}); 
<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="/javascripts/website.js"></script> 
    <link rel="stylesheet" type="text/css" href="/stylesheets/website.css"> 
    <script src="https://code.jquery.com/jquery-2.2.4.js" integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" crossorigin="anonymous"></script> 
<title>test</title> 
</head> 
<body> 

<h1 id="testh1">TEST</h1> 

</body> 
</html> 

回答

1
  1. 你需要你的脚本之前加载jQuery的。

    <script src="https://path-to-jquery"></script> 
    <script src="/javascripts/website.js"></script> 
    
  2. 你需要等待DOM是在其访问任何元素之前准备就绪。用下面的代码,你可以做到这一点:

    $(document).ready(function() { 
        $("#testh1").on("click", function(){ 
         console.log("Clicked"); 
        }); 
    }); 
    

或通过在<body>的,而不是在<head>底部把你的<script>秒。

<script src="https://path-to-jquery"></script> 
    <script src="/javascripts/website.js"></script> 
</body> 

由于您的#testh1元素尚未加载,因此您的测试代码中会出现空字符串。

+0

我应该在哪个文件中加载jQuery? JavaScript(website.js)或EJS(website.ejs)文件? – AnonUser

+0

@AnonUser在EJS/HTML中就像你已经是。你只需要改变顺序。您不能在JS代码中放置'