2016-12-14 77 views
-5

我的if语句有问题,它的任务是检查输入字段并给我一个消息,说明我的字段是否为空。问题是我想把它放在一个函数中,这样如果if声明是false它会自动继续使用该函数并完成它本来的任务。如果语句放在函数中不起作用

正如你所看到的,几乎所有的函数都有if声明。 (我在做一个计算器)。

哦,请像我一样使用这个基本的JavaScript。我对JavaScript的知识还不是很好,因为我在为一个学校任务做这件事,所以我应该使用这种类型的代码。

我会在这里发布我的代码:

<html> 
    <head> 
    <meta charset="utf-8"/> 
    <script> 


     function pozdrav() 
     { 
     alert("Unesite dva broja te odaberite željenu operaciju:"); 
     } 
     function brisi() 
     { 

     var prvibroj = ""; 
     var drugibroj = ""; 
     var rezultat = ""; 
     document.getElementById("prvibroj").value = prvibroj; 
     document.getElementById("drugibroj").value = drugibroj; 
     document.getElementById("rezultat").value = rezultat; 
     } 
     function boja(elem) 
     { 
     var elem = elem.style.color="red"; 
     } 
     function staraboja(elem) 
     { 
     var elem = elem.style.color="black"; 
     } 
     function promjena() 
     { 
     var rezultat=""; 
     document.getElementById("rezultat").value = rezultat; 
     } 
     function plus() 
     { 
     var prvibroj = parseInt(document.getElementById("prvibroj").value); 
     var drugibroj = parseInt(document.getElementById("drugibroj").value); 

     if(prvibroj == "" || drugibroj == "") 
     { 

      alert("Za ispravan izračun, morate unijeti oba broja!"); 
     } 
     else 
     { 
      var rezultat = prvibroj + drugibroj; 
      document.getElementById("rezultat").value = rezultat; 
     } 
     } 
     function minus() 
     { 
     var prvibroj = parseInt(document.getElementById("prvibroj").value); 
     var drugibroj = parseInt(document.getElementById("drugibroj").value); 
     if(prvibroj == "" || drugibroj == "") 
     { 
      alert("Za ispravan izračun, morate unijeti oba broja!"); 
     } 
     else 
     { 
      var rezultat = prvibroj - drugibroj; 
      document.getElementById("rezultat").value = rezultat; 
     } 
     } 
     function mnozenje() 
     { 
     var prvibroj = parseInt(document.getElementById("prvibroj").value); 
     var drugibroj = parseInt(document.getElementById("drugibroj").value); 
     if(prvibroj == "" || drugibroj == "") 
     { 
      alert("Za ispravan izračun, morate unijeti oba broja!"); 
     } 
     else 
     { 
      var rezultat = prvibroj * drugibroj; 
      document.getElementById("rezultat").value = rezultat; 
     } 
     } 
     function djeljenje() 
     { 
     var prvibroj = parseInt(document.getElementById("prvibroj").value); 
     var drugibroj = parseInt(document.getElementById("drugibroj").value); 
     if(prvibroj == "" || drugibroj == "") 
     { 
      alert("Za ispravan izračun, morate unijeti oba broja!"); 
     } 
     else 
     { 
      var rezultat = prvibroj/drugibroj; 
      document.getElementById("rezultat").value = rezultat; 
     } 
     } 

    </script> 
    </head> 
    <body onload="pozdrav()"> 
    <h2>Kalkulator</h2> 
    <p>Prvi broj:</p> 
    <input type="text" id="prvibroj" onmouseover="boja(this)" onmouseout="staraboja(this)" onchange="promjena()" /> <br /> 
    <p>Drugi broj:</p> 
    <input type="text" id="drugibroj" onmouseover="boja(this)" onmouseout="staraboja(this)" onchange="promjena()" /> <br /> 
    <p>Rezultat:</p> 
    <input type="text" id="rezultat" onmouseover="boja(this)" onmouseout="staraboja(this)" onchange="promjena()" /> <br /> <br /> 
    <input type="button" value="+" onclick="plus()"/> 
    <input type="button" value="-" onclick="minus()"/> 
    <input type="button" value="*" onclick="mnozenje()"/> 
    <input type="button" value="/" onclick="djeljenje()"/> 
    <input type="button" value="C" onclick="brisi()"/> 
    </body> 
</html> 
+4

那么,你有什么问题,凡在你的代码,你有吗? –

+3

我相信学校作业的重点是要自己弄清楚,而不是外包给堆栈溢出......否则,'prvibroj'被设置为'parseInt'的结果,所以永远不会是空字符串。它将是一个数字或'NaN'。 –

+0

@P Cmrecki看起来你正在将值解析为整数,但是你的if条件是检查空字符串。 – DavidDomain

回答

0

既然你要转换的输入值整数

var drugibroj = parseInt(document.getElementById("drugibroj").value); 

在drugibroj的值,如果该字段为空将为NaN,所以你应该检查你是否在条件而不是“”

if(isNaN(prvibroj) || isNaN(drugibroj)) 
{ 

     alert("Za ispravan izračun, morate unijeti oba broja!"); 
} 
1

你是这样做的:

var prvibroj = parseInt(document.getElementById("prvibroj").value); 

这要是document.getElementById("prvibroj").value为空,将设置prvibrojNaN

那么你是比较这个变量,如果它是一个字符串:

if(prvibroj == "" || drugibroj == "") 

但如果值为空是一样if (NaN == "" || NaN == "")将始终评估为假(NAN永远无所不能)。

所以一种解决方案是检查NaN而不是空字符串。例如:

var prvibroj = parseInt(document.getElementById("prvibroj").value); 
var drugibroj = parseInt(document.getElementById("drugibroj").value); 

if(isNaN(prvibroj) || isNaN(drugibroj)) 
{ 

    alert("Za ispravan izračun, morate unijeti oba broja!"); 
} 
else 
{ 
    var rezultat = prvibroj + drugibroj; 
    document.getElementById("rezultat").value = rezultat; 
} 

(与同为所有的功能)