Javascript Onclick 函数只能运行一次

标签 javascript html

我有一个希望很简单的问题。我正在尝试在我的应用程序上创建一个 JS 函数,其中 HTML 中有一个数字,每次单击它时,都会从中减去另一个数字并显示结果。

(到目前为止,这已经很有效了。)

那么该操作应该是可重复的,这样数字就会不断变小。

(这部分还不能工作。)

最后,还有一个重置按钮,单击该按钮会将原始数字重置为随机数字。

(随机数是正确找到的,但是当您单击减去时,它会从原始数字中减去,而不是从随机选择的替换数字中减去。)

这是一个部分工作的 JSFiddle

var s = document.getElementById('incrimentOfNumber').innerHTML
	var n = document.getElementById('countdownNumber').innerHTML
	var n = n - s;

	document.getElementById("countdownNumber").onclick = function updateNumber(){
		this.innerHTML = n;
	}

	document.getElementById("resetCountdown").onclick = function resetCountdown(){
		var n = Math.floor(Math.random() * 500) + 200;
		document.getElementById("countdownNumber").innerHTML = n;
	}
    <h3>Count down from the number you see in incriments of <span class="incrimentOfNumber" id="incrimentOfNumber">7</span>.
    	<br />Tap the number to see the correct answer.
    	<br />Repeat as needed.
	</h3>

    <div class="countdownNumber">
    	<h1 id="countdownNumber">284</h1>
	</div>

    <div class="btn" id="resetCountdown">Reset</div>

任何人都可以(1)仔细检查我所做的事情,以确保我没有以愚蠢的方式做事,并且(2)帮助我弄清楚如何让可重复的操作发挥作用?

最佳答案

问题是您只计算一次 n 的值,它应该在每次点击时计算,因此将倒计时点击函数更改为:

document.getElementById("countdownNumber").onclick = function updateNumber(){
        var s = document.getElementById('incrimentOfNumber').innerHTML
        var n = document.getElementById('countdownNumber').innerHTML
        n = n - s;
        this.innerHTML = n;
}

这是一个工作演示:

https://jsfiddle.net/m3q8fn2x/

关于Javascript Onclick 函数只能运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299483/

相关文章:

javascript - 在图层组中放置多个标记

javascript - 'use strict' 不停止功能范围内的提升

html - 你能用 ruby​​ 更改导航链接的 HTML 类吗

html - :before psuedo element changes into share icon怎么办

javascript - 为什么我不能在替换函数中使用 .call()?

javascript - 不使用 Dynamodb 本地时,端点 URL 应该是什么?

javascript - 使用 vanilla Javascript 将字符串列表发送到 ASP.net api Controller

javascript - 使用 Javascript 的实时 Html 编辑器

javascript - 处理响应数据 PHP

javascript - 如何使用 z 索引显示元素