gpt4 book ai didi

javascript - 为什么我的最新代码覆盖了我的其余代码

转载 作者:行者123 更新时间:2023-12-04 09:12:41 24 4
gpt4 key购买 nike

我有一个带计时器的页面。我最新计时器的代码只能正常工作。但其余的计时器不像 10 分钟计时器。它只显示计时器的设置时间。我的最新代码是否覆盖了我的其他代码?两个计时器之间是否混合了变量?我打算在页面上添加几个计时器,但发生这种情况时我被卡住了。
代码链接:http://jsfiddle.net/vtoLx02j/2/

<body>

<div id="1Div">

<h4>Question goes here?</h4>

<input type="text"id="name1"/>

<button onclick="myFunction1()" id="button0" class="button3">Enter</button>


</div>


<div id="2Div" style="display:none;">
<h4 id=typeE>How much time do you think you need in minutes?</h4>
<button onclick="myFunction2()" id="button1" class="button3">10 minutes</button>
<button onclick="myFunction3()" id="button2" class="button3">20 minutes</button>

</div>

<script>
function myFunction1(){
document.getElementById("1Div").style.display="none";
document.getElementById("2Div").style.display="block";
}
</script>

<script>
function myFunction2(){
document.getElementById("2Div").style.display="none";
document.getElementById("timer10").style.display="block";
}
</script>

<script>
function myFunction3(){
document.getElementById("2Div").style.display="none";
document.getElementById("timer20").style.display="block";
}
</script>


<div id="timer10" style="display:none">

<script>
function startTimer10(duration10, display10) {
var timer10 = duration10, minutes10, seconds10;
setInterval(function () {
minutes10 = parseInt(timer10 / 60, 10);
seconds10 = parseInt(timer10 % 60, 10);

minutes10 = minutes10 < 10 ? "0" + minutes10 : minutes10;
seconds10 = seconds10 < 10 ? "0" + seconds10 : seconds10;

display10.textContent = minutes10 + ":" + seconds10;

if (--timer10 < 0) {
timer10 = duration10;
}
}, 1000);
}

window.onload = function () {
var tenMinutes = 60 * 10,
display10 = document.querySelector('#time10');
startTimer10(tenMinutes, display10);
};
</script>

<body>

<center><div><span id="time10">10:00</span></div></center>

</body>

</div>


<div id="timer20" style="display:none">
<script>
function startTimer20(duration20, display20) {
var timer20 = duration20, minutes20, seconds20;
setInterval(function () {
minutes20 = parseInt(timer20 / 60, 10);
seconds20 = parseInt(timer20 % 60, 10);

minutes20 = minutes20 < 10 ? "0" + minutes20 : minutes20;
seconds20 = seconds20 < 10 ? "0" + seconds20 : seconds20;

display20.textContent = minutes20 + ":" + seconds20;

if (--timer20 < 0) {
timer20 = duration20;
}
}, 1000);
}

window.onload = function () {
var twentyMinutes = 60 * 20,
display20 = document.querySelector('#time20');
startTimer20(twentyMinutes, display20);
};
</script>

<body>

<center><div><span id="time20">20:00</span></div></center>

</body>
</div>

</body>

最佳答案

您可以简单地组合所有 functions成单startTimer()功能。
我不知道你为什么是 repeating您的 code一次又一次地实现 相同的结果。代码更少但结果相同是件好事。
所以这就是我所做的并简化了您的代码。

  • 我已经合并了两个 timers进入 function
  • 您不需要使用显示 noneblock再次上演时长
  • 当您点击 timer只需通过 minutes到计时器功能,跨度将开始显示剩余时间
  • 您不需要两个跨度来分别显示计时器,您可以在一个中完成所有操作 span
  • 您正在使用 script标记这么多次不必要的
  • 两个计时器都以更少的代码和相同的结果完美运行。

  • 您可以有多个 timers现在你只需要通过 minutes给您的 startTimer()函数和计时器将从给定的时间开始。
    现场演示

    //Start timer
    function startTimer(duration, display) {
    var timer = duration,
    minutes, seconds;
    setInterval(function() {
    minutes = parseInt(timer / 60, 10);
    seconds = parseInt(timer % 60, 10);
    minutes = minutes < 10 ? "0" + minutes : minutes;
    seconds = seconds < 10 ? "0" + seconds : seconds;
    display.textContent = minutes + ":" + seconds;
    if (--timer < 0) {
    timer = duration;
    }
    }, 1000);
    }

    //1
    function myFunction1() {
    document.getElementById("1Div").style.display = "none";
    document.getElementById("2Div").style.display = "block";
    }

    //10 Minutes
    function myFunction2() {
    document.getElementById("2Div").style.display = "none";
    var tenMinutes = 60 * 10,
    display10 = document.querySelector('#timerDuration');
    startTimer(tenMinutes, display10);
    }

    //20 minutes
    function myFunction3() {
    document.getElementById("2Div").style.display = "none";
    var twentyMinutes = 60 * 20,
    display20 = document.querySelector('#timerDuration');
    startTimer(twentyMinutes, display20);
    }
    <body>
    <div id="1Div">
    <h4>Question goes here?</h4>

    <input type="text" id="name1" />

    <button onclick="myFunction1()" id="button0" class="button3">Enter</button>
    </div>
    <div id="2Div" style="display:none;">
    <h4 id=typeE>How much time do you think you need in minutes?</h4>
    <button onclick="myFunction2()" id="button1" class="button3">10 minutes</button>
    <button onclick="myFunction3()" id="button2" class="button3">20 minutes</button>
    </div>
    <center>
    <div><span id="timerDuration"></span></div>
    </center>
    </body>

    关于javascript - 为什么我的最新代码覆盖了我的其余代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63321763/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com