2017-04-09 68 views
0

有人可以向我解釋爲什麼這不起作用嗎?代碼應該採用用戶輸入的兩個值,並在輸入的值之間計算數組列表中值的數量。例如,假設用戶輸入5作爲他們的第一個值,7輸入他們的第二個值,因爲它們是5到7之間的數組中的3個值,會彈出一個警告,提示「總數值= 3」。但是在我運行代碼的時刻,它只是說總數值爲0?爲什麼是這樣?使用數組計算2個輸入值之間的值的數量

這是我的HTML:

<!DOCTYPE html> 
<body> 
<input type="text" id="num1"></input> 
<input type="text" id="num2"></input> 
<button onclick="start()" type = "button">search</button> 

<script src="array.js"></script> 
</body> 

這是我的JavaScript:

var total = 0; 
var num1 = ""; 
var num2 = ""; 
var array = [1,4,6,7,8,6]; 
for(var a = 0; a < array.length; a++) { 
    if(array[a] >= num1 && array[a] <= num2) { 
     total++; 
    } 
} 
alert("Total numbers of values = " + total); 
+0

因爲NUM1和NUM2爲0。你是不是從得到的值你的輸入字段。 –

回答

1
  • 刪除一個函數內部的邏輯來執行僅上按一下按鈕。
  • getElementById捕捉輸入並將用戶給出的值存儲在num1num2變量中。

function start() { 
 
    var total = 0; 
 
    var num1 = document.getElementById('num1').value; 
 
    var num2 = document.getElementById('num2').value; 
 
    var array = [1, 4, 6, 7, 8, 6]; 
 
    for (var a = 0; a < array.length; a++) { 
 
    if (array[a] >= num1 && array[a] <= num2) { 
 
     total++; 
 
    } 
 
    } 
 
    alert("Total numbers of values = " + total); 
 
}
<input type="text" id="num1"> 
 
<input type="text" id="num2"> 
 
<button onclick="start()" type="button">search</button>

你也可以用Array#filter做到這一點。這個函數將返回一個只有滿足條件的數字的數組。然後,只需檢查它length屬性知道有多少元素仍然存在。

function start() { 
 
    var num1 = document.getElementById('num1').value, 
 
     num2 = document.getElementById('num2').value, 
 
     array = [1, 4, 6, 7, 8, 6], 
 
     res = array.filter(v => v >= num1 && v <= num2).length; 
 
     alert("Total numbers of values = " + res); 
 
}
<input type="text" id="num1"> 
 
<input type="text" id="num2"> 
 
<button onclick="start()" type="button">search</button>

0

設置num1num2input值。

var num1 = document.getElementById('num1').value; 
var num2 = document.getElementById('num2').value; 
0

您的代碼就可以了,你可以改變這裏

var num1 = ""; 
var num2 = ""; 

您的代碼會像

var num1 = document.getElementById('num1').value; 
var num2 = document.getElementById('num2').value;