我正在学习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();
});
答案 0 :(得分:3)
这里有几个问题:
问题#1:
要绑定到的DOM中的元素不存在,所以执行以下任何或所有操作:
script
标记之前将</body>
标记移至页脚(通常最佳做法)。问题#2:
您不应该在button
内的元素上绑定click事件处理程序,它不会在符合规范的浏览器中工作,因为button
会占用该事件,而不会传播给子级。
请参阅HTML5 spec for button以获取参考:
内容模型:
短语内容,但必须没有互动内容后代。
相反,将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;
答案 1 :(得分:2)
您应该输入以下代码:
$('#click').click(function(){
waarde.amount = waarde.amount + 1;
updateValues();
});
$(document).ready(function(){})
函数内部。 $('#click')
尚未在DOM中。
答案 2 :(得分:2)
您必须在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;
}
答案 3 :(得分:1)
您的代码存在的问题是,当javascript加载js文件时,您没有分配事件处理程序。它应该在就绪函数中调用。
var waarde = {
amount:2
};
$(document).ready(function(){
$('#click').click(function(){
waarde.amount = waarde.amount + 1;
updateValues();
});
});
function updateValues(){
document.getElementById("click").innerHTML = waarde.amount;
}
答案 4 :(得分:0)
你应该将它包装在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;
}
答案 5 :(得分:0)
两点:
您应该将jQuery事件侦听器放在document.ready。
中无法保证在跨度上处理点击事件。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<button id="click2">0</button>
&#13;
%paste
&#13;
答案 6 :(得分:0)
您可以看到问题解决方案是here
您在$(document).ready(function(){}(;