2016-12-24 158 views
0

我有一个正确加载的外部JS文件。外部JS文件 - 事件监听器

我在该文件中有一个函数,它在按钮上添加了一个事件监听器。

我也有内部文件,应该在触发事件时调用的函数。

因此,我们有: HTML

<input type="submit" id="subBtn" value="POST ARTICLE"> 

    <script> 
     eventListeners(); 
    </script> 

JS文件

function eventListeners(){ 
document.getElementById("subBtn").addEventListener("click",newContent); } 

newContent()也是JS文件

这里面失败。

我已经注意到然而,当我把事件侦听器的输入,像这样:

<input type="submit" onclick="newContent();" value="POST ARTICLE"> 

它的工作原理。

为什么?我该如何纠正自己?

非常感谢提前!

+0

JavaScript文件包含在哪里? –

回答

0

尝试将您的eventListeners()调用移动到body的onload函数。如果这个工作正常,那么你的脚本在元素加载到文档之前触发。

事情是这样的 -

<body onLoad="eventListeners();"> 
0

你在哪里,包括你的JS文件?如果您在元素本身之前包含它,则不能添加事件侦听器,因为该元素尚未加载。在脚本的最后部分包含脚本通常是最佳实践。在添加事件处理程序之前,让JS等待直到文档已经加载也是明智的:

function newContent(){ 
    // function 
} 

function eventListeners(){ 
    document.getElementById("subBtn").addEventListener("click",newContent); 
} 

// Wait until the document is ready 
document.addEventListener("DOMContentLoaded", function() { 
    eventListeners(); 
});