javascript 不读取 html 中的值

Posted

技术标签:

【中文标题】javascript 不读取 html 中的值【英文标题】:javascript dosen't read the value in html 【发布时间】:2021-02-06 20:18:18 【问题描述】:

所以我想制作一个程序,从您选择的值开始倒计时,但问题是当我尝试将值带到 javascript 时它不起作用但是当我在 html 中输入值时它起作用

这是我的html代码

<body>
<div id="count">
    <input id="time" type="number" min="0">
    <button id="button">Press here to begin the countdown</button>
</div>
<script src="lol.js"></script>

这是我的 javascript 代码

var count = document.getElementById("count"),
    seconds = document.getElementById("time").value ,
    btn = document.getElementById("button"),
    secondPass;
    countDown = setInterval(function() 
        secondPass()
     , 1000);
btn.onclick =         
function secondPass()
    var minutes = Math.floor(seconds / 60),
        remseconds = seconds % 60;
    count.innerHTML = minutes + ":" + remseconds;
    if (remseconds < 10)
        remseconds = "0" + remseconds;
    
    if (seconds> 0 )
        seconds = seconds - 1;
       
    else 
        clearInterval(countDown)
        count.innerHTML = "done !"
    

【问题讨论】:

请发布您的输入和所需的输出 仅供参考:setTimeout 不准确,这将不是一个很好的倒数计时器,因为它是错误的 【参考方案1】:

您的代码中的问题是您试图在输入之前获取value。 如果我理解正确,你想要这个:

var count = document.getElementById("count"),
    btn = document.getElementById("button"),
    secondPass;


btn.addEventListener("click", secondPass);

function secondPass() 
    var seconds = document.getElementById("time").value

    var countDown = setInterval(function () 
        var minutes = Math.floor(seconds / 60),
            remseconds = seconds % 60;
        count.innerHTML = minutes + ":" + remseconds;
        if (remseconds < 10) 
            remseconds = "0" + remseconds;
        
        if (seconds > 0) 
            seconds = seconds - 1;
        
        else 
            clearInterval(countDown)
            count.innerHTML = "done !"
        
    , 1000);
<div id="count">
    <input id="time" type="number" min="0">
    <button id="button">Press here to begin the countdown</button>
</div>

【讨论】:

这正是我想要的!非常感谢我的兄弟 很高兴我能帮上忙 :) 您可以将此答案标记为已接受的答案。【参考方案2】:

主要错误 - 声明 seconds 变量时的时间 - 时间输入为空。 我修复了您的示例,因此您可以找出问题所在

var count = document.getElementById("count"),
    seconds,
    btn = document.getElementById("button"),
    countDown
  
  btn.onclick = function() 
    seconds =  document.getElementById("time").value;
    countDown = setInterval(function() 
      secondPass()
    , 1000);
  
    
function secondPass()
     console.log('S', seconds)
    var minutes = Math.floor(seconds / 60),
        remseconds = seconds % 60;
    count.innerHTML = minutes + ":" + remseconds;
    if (remseconds < 10)
        remseconds = "0" + remseconds;
    
    if (seconds> 0 )
        seconds = seconds - 1;
       
    else 
        clearInterval(countDown)
        count.innerHTML = "done !"
    

【讨论】:

以上是关于javascript 不读取 html 中的值的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何读取Javascript 对象的值?

javascript 循环读取数组中的值

Html读取select控件的值

在 javascript 中读取 html 复选框

RootFramework框架实现文件读取和上传以及使用JavaScript获取fields中的值

JavaScript