2011-03-15 104 views
8

我正在製作一個javascript函數,我需要確認輸入。我寫了下面的代碼,但它給出了負值,即「else」部分,即使我輸入了一個有效值。有人可以提出一個解決方案嗎?將html值傳遞到javascript函數

HTML文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Javascript App</title> 
<script type="text/javascript" src="app1.js"> 

</script> 
</head> 
<body><h1 id="heading1" style="text-align:center; height:auto; width:auto; font-family:'Arial Black', Gadget, sans-serif">Determinant of a nxn matrix</h1> 
<p id="paragraph1" style="font-family:'Arial Black', Gadget, sans-serif"> This program allows you to compute the determinant of a nxn matrix</p> 

<p> 
Input the order of the matrix 
<br /> 

<input type="text" maxlength="3" name="value" /> 
<input type="button" value="submit" onclick="verifyorder(value)" /> 
</p> 
<p id="error"></p> 
<p id="detspace"></p> 



</body> 
</html> 

JavaScript文件:

function verifyorder(order){ 
; 
    if(order>0){ 
     return true; 
    } 
    else{ 
     alert("Sorry, you need to enter a positive integer value, try again"); 
     document.getElementById('error').innerHTML="Sorry, you need to enter a positive integer value, try again"; 

    } 
} 
+0

您發佈明確的代碼運行* *後出現的問題。我的猜測是你已經傳入了一個*字符串*,而不是一個數字,但沒有調用'verifyorder'的代碼,我不知道。 – Malvolio 2011-03-15 18:01:09

+0

您的代碼中沒有任何內容將稱爲「value」的(未定義的和未初始化的)Javascript變量與正好具有名稱「value」的DOM元素相關聯。您需要以某種方式告訴Javascript找到該輸入元素並提取其值。 – 2011-03-15 18:03:53

+0

我該怎麼做? – 2011-03-15 18:05:27

回答

5

這裏是JSfiddle Demo

我改變你的HTML,讓你的輸入文本框的ID的價值。我刪除了您的驗證函數的傳遞參數,並通過使用document.getElementById()來獲取文本字段的內容。然後我轉換海峽與+order值,以便您可以檢查它是否大於零:

<input type="text" maxlength="3" name="value" id='value' /> 
<input type="button" value="submit" onclick="verifyorder()" /> 
</p> 
<p id="error"></p> 
<p id="detspace"></p> 

function verifyorder() { 
     var order = document.getElementById('value').value; 
     if (+order > 0) { 
      alert(+order); 
      return true; 
     } 
     else { 
      alert("Sorry, you need to enter a positive integer value, try again"); 
      document.getElementById('error').innerHTML = "Sorry, you need to enter a positive integer value, try again"; 
     } 
    } 
+1

如果我想將param帶給javascripts? 'javascript:somefunc(someparams);'這樣? – jboxxpradhana 2015-12-17 20:16:54

-3

嘗試:if(parseInt(order)>0){....

18

給文本框的「txtValue」一個ID,輸入按鈕聲明更改爲以下:

<input type="button" value="submit" onclick="verifyorder(document.getElementById('txtValue').value)" /> 
+3

這裏有更好的答案,它使用函數的參數。 – 2015-07-16 02:02:03

+1

這個答案應該被接受。 – madrick 2016-12-10 01:59:56

0

簡而言之id屬性在您輸入文本字段 -

<input type="text" maxlength="3" name="value" id="value" />