首页 > 解决方案 > 使用 variable.length 测试值是否为空

问题描述

我在编写问题以计算给定 3 个边的三角形面积时遇到问题,当输入为空时,我希望我的 if 发出警报并且我的变量假定给定值,但似乎我的程序只是忽略了 if:

function calcular(){
var lado1 = window.document.getElementById('lado1')
var lado2 = window.document.getElementById('lado2')
var lado3 = window.document.getElementById('lado3')
var l1 = Number(lado1.value)
var l2 = Number(lado2.value)
var l3 = Number(lado3.value)
if (lado1.length === 0 && lado2.length === 0 && lado3.length === 0) {
window.alert("Um ou mais campos vazios, considerando valores 5, 6 e 7.")
l1 = 5
l2 = 6
l3 = 7    
} 
var semp = (l1 + l2 + l3)/2
var area = Math.sqrt(semp*((semp-l1)*(semp-l2)*(semp-l3)))
answer.innerHTML = `A área do triângulo dado é de <strong>${area}</strong>!`
}

当我在输入上给出任何值时,它工作正常。任何人都可以看到问题吗?

标签: javascriptif-statement

解决方案


您的第一个问题似乎是您使用的是 AND 运算符 ( &&) 而不是 OR 运算符 ( ||),因此它只会在al值为空时发出警报。

您的第二个问题是您似乎正在阅读.lengthDOM 元素本身,而不是值。

您可能想改用它:

if (lado1.value.length === 0 || lado2.value.length === 0 || lado3.value.length === 0) {
  window.alert("Um ou mais campos vazios, considerando valores 5, 6 e 7.")
  // ...  
} 

或简而言之:

if (!lado1.value || !lado2.value || !lado3.value) {
  window.alert("Um ou mais campos vazios, considerando valores 5, 6 e 7.")
  // ...  
} 

尽管您可能还想检查输入是否是有效数字。


推荐阅读