更简单的Javascript计数器
我需要一些关于点击事件的帮助,我正在尝试通过img上的点击事件来增加单个计数器。我已经尝试了许多变体,我想在不使用jQuery的情况下解决这个问题更简单的Javascript计数器,javascript,html,Javascript,Html,我需要一些关于点击事件的帮助,我正在尝试通过img上的点击事件来增加单个计数器。我已经尝试了许多变体,我想在不使用jQuery的情况下解决这个问题 <script async> var count = 0; var clickerCount = document.getElementsByClassName('clicker'); var cat = { count : 0, counter: function(){
<script async>
var count = 0;
var clickerCount = document.getElementsByClassName('clicker');
var cat = {
count : 0,
counter: function(){
this.count++;
clickerCount.textContent = "Kitten Click Count :" + this.count;
console.log("counter function working");
console.log(cat.count);
}
};
function modifyNum(){
cat.counter();
console.log("modifyNum function working");
}
</script>
</head>
<body>
<div style="display:inline">
<div>
<img src="http://placekitten.com/200/296" id="cat0" onclick="modifyNum();">
<p id='clicker'>Kitten Click Count :</p>
</div>
<div>
<img src="http://placekitten.com/200/296" id='cat1' onclick="modifyNum();">
<p id='clicker'>Kitten Click Count :</p>
</div>
</div>
var计数=0;
var clickerCount=document.getElementsByClassName('clicker');
var cat={
计数:0,
计数器:函数(){
这个.count++;
clickerCount.textContent=“Kitten Click Count:”+this.Count;
控制台日志(“计数器功能工作”);
控制台日志(类别计数);
}
};
函数modifyNum(){
cat.counter();
console.log(“modifyNum函数工作”);
}
小猫点击次数:
小猫点击次数:
首先,您在两个位置使用id='clicker'
(id应该是唯一的),然后使用document.getElementsByClassName
,它不会返回任何内容,因为您使用的是id而不是类
一旦将其更改为类,
document.getElementsByClassName
将返回一个元素数组。您必须使用clickerCount[0]
等等,或者在数组中循环。首先,您在两个位置使用id='clicker'
(id应该是唯一的),然后使用document.getElementsByClassName
,因为您使用的是id而不是类,所以不会返回任何内容
一旦将其更改为类,
document.getElementsByClassName
将返回一个元素数组。您必须使用clickerCount[0]
等等,或者在数组中循环。好的,首先您有两个id为“clicker”的元素。你可能想让它们成为类和ID。因此,当您调用modifynum()时,它无法找到它们,因为该类不存在。其次,JS在HTML元素之前加载。因此,当JS到达这一行时:
var clickerCount = document.getElementsByClassName('clicker');
它将什么也找不到,即使您更正了类名。因此,您希望将JS移动到HTML文档的页脚,或者将代码包装在pageLoad()上调用的方法中
我认为这应该解决它。大部分情况下,您的对象看起来是正确的 好的,首先有两个元素的id为“clicker”。你可能想让它们成为类和ID。因此,当您调用modifynum()时,它无法找到它们,因为该类不存在。其次,JS在HTML元素之前加载。因此,当JS到达这一行时:
var clickerCount = document.getElementsByClassName('clicker');
它将什么也找不到,即使您更正了类名。因此,您希望将JS移动到HTML文档的页脚,或者将代码包装在pageLoad()上调用的方法中
我认为这应该解决它。大部分情况下,您的对象看起来是正确的 我已经解决了这个问题 如果你能对ID进行硬编码,那么在我看来,仅仅通过ID来操作事情就更容易了
<div>
<img src="http://placekitten.com/200/296" id="cat0" onclick="counter(0);">
<p id='clicker0'>Kitten Click Count :</p>
<input type="hidden" id="counter0" value="0">
</div>
function counter(id) {
var cnt = parseInt(document.getElementById("counter" + id).value);
cnt++;
document.getElementById("counter" + id).value = cnt;
document.getElementById('clicker' + id).innerHTML = 'Kitten Click Count :' + cnt;
}
小猫点击次数:
功能计数器(id){
var cnt=parseInt(document.getElementById(“计数器”+id).value);
cnt++;
document.getElementById(“计数器”+id).value=cnt;
document.getElementById('clicker'+id.).innerHTML='Kitten Click Count:'+cnt;
}
这不是同样的方法,但我发现它很容易理解
希望能有所帮助。我已经在这本书中解决了这个问题 如果你能对ID进行硬编码,那么在我看来,仅仅通过ID来操作事情就更容易了
<div>
<img src="http://placekitten.com/200/296" id="cat0" onclick="counter(0);">
<p id='clicker0'>Kitten Click Count :</p>
<input type="hidden" id="counter0" value="0">
</div>
function counter(id) {
var cnt = parseInt(document.getElementById("counter" + id).value);
cnt++;
document.getElementById("counter" + id).value = cnt;
document.getElementById('clicker' + id).innerHTML = 'Kitten Click Count :' + cnt;
}
小猫点击次数:
功能计数器(id){
var cnt=parseInt(document.getElementById(“计数器”+id).value);
cnt++;
document.getElementById(“计数器”+id).value=cnt;
document.getElementById('clicker'+id.).innerHTML='Kitten Click Count:'+cnt;
}
这不是同样的方法,但我发现它很容易理解
希望能有所帮助。这个例子应该有用。我将HTML与Javascript分开,因为它看起来更清晰。您可以以它为例,以自己的方式扩展/创建自己的 希望能有所帮助 HTML:
小猫点击次数:0
小猫点击次数:0
JS:
var-imagescantable=document.getElementsByClassName(“可数”);
var计数器=[];
对于(var i=0;i
var-imagescantable=document.getElementsByClassName(“可数”);
var计数器=[];
对于(var i=0;i
小猫点击次数:0
小猫点击次数:0
这个例子应该有用。我将HTML与Javascript分开,因为它看起来更清晰。您可以以它为例,以自己的方式扩展/创建自己的
希望能有所帮助
HTML:
小猫点击次数:0
小猫点击次数:0
JS:
var-imagescantable=document.getElementsByClassName(“可数”);
var计数器=[];
对于(var i=0;i