当前位置: 首页 > 知识库问答 >
问题:

我无法从输入中得到值

蒯硕
2023-03-14

我正在制作一个基本计时器,这是我的第一个项目之一,当你按下一个按钮时,代码应该创建3个不同的变量,从它们各自的输入中获取值,这3个变量代表小时、分钟和秒。

发生的事情是,如果你安慰。记录由于某种原因未定义的这3个变量中的任何一个,如果没有这些值,整个倒计时将无法工作。

输入被设置为在html中的value=0开始,所以它应该至少返回0,而不是未定义

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="title-container">

    <div class="title"><h1>vamos a meditar un poco...</h1> </div>

</div>

<div class="timer-container">
    <div class="screen-timer"><h2></h2></div>
    <input type="number" min="0" max="60" value="0" id="hours">
    <input type="number" min="0" max="60" value="0" id="minutes">
    <input type="number" min="0" max="60" value="0" id="seconds">
</div>    

<div class="button-container">
    <button class="btn">Iniciar</button>
</div>


<script src="app.js"></script>

下面是javascript代码:

   let button = document.querySelector(".btn");
let title = document.querySelector(".title");
let screenTimer = document.querySelector(".screen-timer");

//quotes
let quotes = ["OM MANI PADME HUM", "OM", "BUENOS PENSAMIENTOS, BUENAS PALABRAS, BUENAS ACCIONES", "YO FLUYO COMO EL AGUA"];

//timer start button
button.addEventListener("click", function(){

//time units
let h = document.getElementById("hours").value;
let m = document.getElementById("minutes").value;
let s = document.getElementById("seconds").value;


//title changer
let index = parseInt((Math.random() * quotes.length));
title.innerHTML = `<div class="title"><h1>${quotes[index]}</h1></div>`;

//interval for the timer
let intervalId = setInterval(timer, 1000);

//timer
function timer(){

    if(m > 0 && s <= 59){
        s--;
    } else if(m > 0 && s == 0){
        m--;
        s = 59;
    } else if (h > 0 && m == 0 && s == 0){
        h--;
        m = 59;
        s = 59;
    }

    if (h === 0 && m === 0 && s === 0){
        clearInterval(intervalId)
    }
}


//show the timer on the screen
screenTimer.innerHTML = `<div class="screen-timer"><h2> ${h + ":" + m + ":" + s} </h2></div>`


console.log(h);
console.log(m);
console.log(s);
console.log(h.value);
console.log(m.value);
console.log(s.value);
});

我看到了其他解决方案,人们写document.getElementById(id)。点击而不是使用addEventListener(“点击”,...)让按钮在点击时工作,但我认为这是一样的

共有2个答案

樊桐
2023-03-14

前三个控制台。日志生成正确的结果。

console.log(h);
console.log(m);
console.log(s);

这些已经是值本身,而不是dom节点。

console.log(h.value);
console.log(m.value);
console.log(s.value);

当您尝试访问值本身的属性“value”时,结果是未定义的。

华永新
2023-03-14

您在此处正确访问小时、分钟和秒的值,

let h = document.getElementById("hours").value;
let m = document.getElementById("minutes").value;
let s = document.getElementById("seconds").value;

他们在你的控制台日志中也给出了正确的结果,

console.log(h);
console.log(m);
console.log(s);

你做错了的是试图访问。这三个变量的值属性不存在,这就是为什么打印未定义的

对输出使用h, m, s变量。

 类似资料:
  • 我试图创建一个程序,在这个程序中我可以接受输入,并用servlet获得一个数字的平方根。我是初学者,所以知道的不多。问题是当我尝试我的代码时,它不起作用。代码如下: myservletdemo.java 结果是:首先,当你点击链接时,你会得到: 这个结果

  • 这里我试图测试我的对象是否等于! 关于这个数组,输出应该是: true False False 但我得到了以下输出: False False False 为什么第一个相等是假的? 下面是IntegerArray类的实现: *注意:该类必须是不可变的

  • 尝试创建自动订阅新闻的脚本,但是遇到了一个问题,< code>selenium找不到电子邮件输入和提交按钮。每次获取< code > selenium . common . exceptions . nosuchelementexception:

  • 我对使用此处描述的“舍入半偶数”对大十进制数进行舍入有问题。 我想四舍五入到小数点后两位: 输出: 23.87 但是数字是偶数,所以它应该是23.86还是不是?

  • 我正在写一个程序,用Android系统发送短信。单击“发送”按钮后,我想获得消息的状态,如“已发送”、“已送达”。这部分很好用。问题是,我想得到一个电话号码,信息被发送到该号码,并传送到内部广播。这是必要的,因为SMS可以同时发送给多个用户。我该怎么做?我试着把“不”放在意图上,并把它放进广播接收机,但它不起作用。以下是示例代码: 和一个广播接收器: 仅供参考,第一个代码在通过不同电话号码的循环中

  • 我正在从终端运行我的Java程序,我试图使用我的代码中的linux命令来计算某个目录中的文件数量;我已经设法获得了除此之外的所有其他命令的输出。 我的命令是: 当我在代码中运行命令时,它似乎没有任何输出,但当我在终端中运行相同的命令时,它工作正常,并实际输出该目录中的xml文件数。 这是我的代码: 更新代码,带输出 输出: