卡住和IF或ELSE

时间:2020-05-27 17:26:06

标签: javascript if-statement

问题在于它不显示idade,实际上给出答案的方式取决于您输入的内容,即该函数仅识别第一个条件。

我已经尝试调试代码,但是我得到了:

没有调试适配器,无法发送“评估”

var idade = document.querySelector('input#nmd')
var n1 = Number(idade.value)
var res = document.getElementById('res')

function clicar() {
  if (n1 < 16) {
    res.innerHTML = ('Nao vota')
  }
  if (n1 < 18) {
    res.innerHTML = ('Voto opcional')
  } else if (n1 > 18) {
    res.innerHTML = ('Voto obrigado')
  }
}
<h1><strong></strong>Verificador de multas</strong>
</h1>
<input type="number" name="nmd" id="nmd" value="Digite">
<input type="button" value="ir" id="ir" onclick="clicar()">
<div id="res">
  <h2>Resultado...</h2>
</div>

3 个答案:

答案 0 :(得分:0)

仅在第一次读取脚本标签时才读取输入值。

或者,换句话说:您正在调用函数clicar而不读取实际输入值。

下面是一个工作示例。

function clicar() {
    var idade = document.querySelector('input#nmd')
    var n1 = Number(idade.value)
    var res = document.getElementById('res')
    if (n1 < 16) {
        res.innerHTML = ('Nao vota')
    } else if (n1 < 18) {
        res.innerHTML = ('Voto opcional')
    } else if (n1 > 18) {
        res.innerHTML = ('Voto obrigado')
    }
}
<body>
<h1><strong></strong>Verificador de multas</strong></h1>
<input type="number" name="nmd" id="nmd" value="Digite">
<input type="button" value="ir" id="ir" onclick="clicar()">
<div id="res">
    <h2>Resultado...</h2>
</div>

答案 1 :(得分:0)

function clicar() { 
    var idade = document.querySelector('input#nmd');
    var res = document.getElementById('res');
      var n1 = Number(idade.value);
      if (n1 < 16) { 
        res.innerHTML = ('Nao vota') 
      } 
      if (n1 < 18) { 
        res.innerHTML = ('Voto opcional') 
      } else if (n1 > 18) { 
        res.innerHTML = ('Voto obrigado') 
      } 
    }
}
<body>
          <h1><strong>Verificador de multas</strong></h1>
          <input type="number" name="nmd" id="nmd" value="Digite">
          <input type="button" value="ir" id="ir" onClick="clicar()">
          <div id="res">
            <h2>Resultado...</h2>
          </div>
</body>

答案 2 :(得分:0)

我对该函数进行了一些重构。我不知道您要使用什么值进行测试,但是对于每个<18的值,第一个IF语句将被第二个IF语句否决。我认为这是您的问题。

您可以在https://www.webtoolkitonline.com/javascript-tester.html

上在线测试此脚本
function clicar(n1) {

    if (n1 < 16) {res = 'Nao vota'} 

    if (n1 < 18) {res = 'Voto opcional'} 
    else 
        if (n1 > 18) {res = 'Voto obrigado'}
    return res
}

alert(clicar(10) + '|' + clicar(17) + '|' + clicar(44));

您所能做的就是在得到答案后立即退出函数(使用return)。另外,不要忘记包含n1 >= 18而不是n1 > 18,否则数字18将会失败。

function clicar(n1) {
    if (n1 < 16) {return 'Nao vota'} 

    if (n1 < 18) {return 'Voto opcional'} 

    if (n1 >= 18) {return 'Voto obrigado'}

}

alert(clicar(10) + '|' + clicar(17) + '|' + clicar(44));