[英]JavaScript button event handler not working
我正在学习javascipt,现在我有一段代码,但我无法让它工作,javascript没有被执行。 我已经在网上搜索过但我找不到答案。 也许你们可以帮助我。
HTML
<html>
<head>
<title>Text Game</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<button><span id="click">0</span></button>
</body>
</html>
使用Javascript
// Variables
var waarde = {
amount:2
};
$(document).ready(function() {
updateValues();
});
function updateValues() {
document.getElementById("click").innerHTML = waarde.amount;
}
$('#click').click(function() {
waarde.amount = waarde.amount + 1;
updateValues();
});
你有几个问题:
问题#1:
DOM中不存在要绑定的元素,所以执行以下任何或所有操作:
问题#2:
您不应该在button
内的元素上绑定click事件处理程序,它不会在符合规范的浏览器中工作,因为button
会占用事件,而不会传播给子项。
请参阅HTML5规范以获取参考:
内容模型:
短语内容,但必须没有互动内容后代。
而是将click事件处理程序绑定到button
本身。
// Variables var waarde = { amount: 2 }; $(document).ready(function(){ updateValues(); }); function updateValues(){ document.getElementById("click").innerHTML = waarde.amount; } // Binding to the button element using event delegation. $(document).on('#button').click(function(){ waarde.amount = waarde.amount + 1; updateValues(); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="button"><span id="click">0</span></button>
此外,除非你需要span
元素用于其他东西,你可以摆脱它并只使用:
document.getElementById("button").innerHTML = waarde.amount;
你应该把这段代码:
$('#click').click(function(){
waarde.amount = waarde.amount + 1;
updateValues();
});
在$(document).ready(function(){})
函数里面。 $('#click')
不在DOM中..
您必须在document.ready中编写“Click”事件
var waarde = {
amount: 2
};
$(document).ready(function () {
$('#click').click(function () {
waarde.amount = waarde.amount + 1;
updateValues();
});
updateValues();
});
function updateValues() {
document.getElementById("click").innerHTML = waarde.amount;
}
您的代码的问题是,当javascript加载js文件时,您没有分配事件处理程序。 它应该在ready函数中调用。
var waarde = {
amount:2
};
$(document).ready(function(){
$('#click').click(function(){
waarde.amount = waarde.amount + 1;
updateValues();
});
});
function updateValues(){
document.getElementById("click").innerHTML = waarde.amount;
}
你应该将它包装在ready
方法中!
// Variables
var waarde = {
amount:2
};
$(document).ready(function() {
$('#click').click(function() {
waarde.amount = waarde.amount + 1;
updateValues();
});
});
function updateValues() {
document.getElementById("click").innerHTML = waarde.amount;
}
这是一个codepen链接http://codepen.io/anon/pen/vKXQza
两点:
你应该把你的jQuery事件监听器放在document.ready中。
无法保证在span上运行click事件。
// Variables var waarde = { amount:2 }; $(document).ready(function(){ updateValues(); $('#click2').click(function(){ waarde.amount++; updateValues(); }); }); function updateValues(){ document.getElementById("click2").innerHTML = waarde.amount; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <button id="click2">0</button>
您可以在此处查看问题解决方案
您缺少$(document).ready(function(){}(;
按钮单击事件$(document).ready(function(){}(;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.