繁体   English   中英

将Javascript与HTML分开

[英]Separating Javascript from HTML

在DIV中有js,例如:onclick,onkey down等。如何在不丢失功能的情况下在新的javascript文件上进行设置。 我已经有一个外部js文件。 我想在其中添加“ onclick”内容。 但是我不确定如何做到这一点,以及如何使其发挥作用。

有人能帮我吗?

 <!DOCTYPE html> <html> <head> <title>Page Title</title> <link rel="stylesheet" type="text/css" href="raad.css"> </head> <body> <h1>This is a Heading</h1> <p>This is a paragraph.</p> <div id="container"> <h1>Raad het goede nummer!</h1> <div id="message_txt"></div> <form id="userInput" name="userInput" method="post"> <input id="input_txt" name="limitedtextfield" type="text" onKeyDown="limitText(this.form.limitedtextfield,3);" onKeyUp="limitText(this.form.limitedtextfield,3);" maxlength="3"> <br /> <button id="guess_btn" type="button" onclick="guessNumber()">RAAD</button> <br /> <button id="playAgain_btn" type="button" onclick="initGame()">OPNIEUW</button> </form> </div> <script type="text/javascript" src="raad.js"></script> </body> </html> 

您可以在javascript文件中执行以下操作:

document.getElementById("guess_btn").onclick = function() {guessNumber()};

function guessNumber() {
    ......
}

然后对其他事件执行相同的操作。

我希望这有帮助。

您可以使用addEventListener将所有事件处理程序属性从HTML移到JS。


因此,例如:

<input id="input_txt" name="limitedtextfield" type="text" onKeyDown="limitText(this.form.limitedtextfield,3);" onKeyUp="limitText(this.form.limitedtextfield,3);" maxlength="3">

应该变成这个:

的HTML

<input id="input_txt" name="limitedtextfield" type="text" maxlength="3">

JS

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

input_txt.addEventListener('keydown', function(e){
    limitText(this.form.limitedtextfield,3);
});
input_txt.addEventListener('keyup', function(e){
    limitText(this.form.limitedtextfield,3);
});

理想情况下,您可以对回调使用通用函数,如下所示:

function handleInputKeys() {
    limitText(this.form.limitedtextfield,3);
}

然后只需:

input_txt.addEventListener('keyup', handleInputKeys);

下一个示例:

<button id="guess_btn" type="button" onclick="guessNumber()">RAAD</button>

应该:

的HTML

<button id="guess_btn" type="button">RAAD</button>

JS

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

guess_btn.addEventListener('click', guessNumber);

等等...

在这种情况下,如果您想将事件(例如“ onclick”等)添加到您的javascript文件中,而不必只在HTMl中编码该事件,则可以在javascript中使用事件处理程序/侦听器。 本质上,您将在将要执行该操作的对象上设置一个侦听器,然后在执行该操作后将处理该做什么。

看看这个前面的问题。

我希望这有帮助!

没问题,您首先必须访问要操作的元素。 我建议使用jQuery,它使初学者更容易理解DOM操作。

因此: 在此处获取jQuery并将其放在您的网络服务器中,以便可以找到它。 在您的HTML中引用它,如下所示:

<script type="application/javascript" src="js/jquery-1.11.2.js"></script>

如果在jquery之后加载javascript文件,则应该有权访问jQuery-Object($)。

(现在出现的所有内容都应该写在您的js文件中)

第二项业务:初始化。 要正确初始化代码,必须确保站点上的所有内容均已加载。 这是通过等待特定的事件来完成的( ready -event wich绑定到document )。

$(document).on('ready', function(){
   // here goes the init-code
});

on(...)-Statement内部的函数称为回调,并在事件触发后进行评估。

您可以通过id属性访问元素。 例如$('#input_txt')引用id为'input_txt'的输入元素。 $是jQuery对象,而'#input_txt'是所谓的选择器。 选择器可以明确引用元素。

最后,这是您真正想要的事情:操作绑定到您特定元素的事件。 这是通过jQuery方法“ on”完成的。 我们使用它来等待文档处于“就绪”状态。 现在,我们使用它来等待特定元素上的特定事件。

每次您单击元素时,都会触发一个“单击”事件。 'keyup'和'keydown'等效,在这里,当焦点位于Element上时,如果用户按下或释放键盘,则会触发事件。 请记住:如果事件被触发并且回调函数(在此上下文中通常称为“处理程序”)已绑定,则将评估相应的函数。

$(document).on('ready', function(){
   $('#input_txt').on('keydown', function({
       limitText(this.form.limitedtextfield,3);
   })
   .on('keyup', function({
       limitText(this.form.limitedtextfield,3);
   });

   $('#guess_btn').on('click', function({
       guessNumber();
   });

   $('#playAgain_btn').on('click', function({
       initGame();
   });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM