2016-05-30 3 views
-1

Я попытался запустить этот код. но когда я установил x из петля, код не работал.использовать переменную из цикла for

function count(){ 
     var textbox,x=0; 
     textbox = document.getElementsByClassName('price'); 
     for (var i=0;i<=textbox.length;i++) { 
      x += parseInt(textbox[i].value); 
     }  
     document.getElementById('total').value=x; 
    } 
+0

, что ваше сообщение об ошибке? – messerbill

+0

Что вы подразумеваете под «set out of loop»? https://jsfiddle.net/7msje7vr/ – Pimmol

+0

этот код ничего не делает –

ответ

4

Похоже, что верхняя граница вашего цикла for 1 слишком велика. Попытайтесь:

function count(){ 
     var textboxes,x=0; 
     textboxes = document.getElementsByClassName('price'); 
     for (var i=0;i<textboxes.length;i++) { 
      x += parseInt(textboxes[i].value); 
     }  
     document.getElementById('total').value=x; 
    } 

count(); 
2

Ваша функция не работает как по длине ценовых входов, так и по потенциальным значениям внутри этих ценовых входов.

Использование <= по длине будет выдавать ошибку на несуществующие входной цене «неперехваченным TypeError: Не удается прочитать свойство„значение“не определено»

мне не понравилось ваше имя «графа», так как вы были не считая ничего, поэтому я изменил его, а также некоторые переменные, чтобы сделать намерение понятным.

Кроме того, значения, такие как «08», не будут анализироваться, как ожидалось (восьмеричные), и не будут «fred».

Рассмотрим следующие входы:

<input class="price" value="33" /> 
<input class="price" value="3" /> 
<input class="price" value="-23" /> 
<input class="price" value="13" /> 
<input class="price" value="08" /> 
<input class="price" /> 
<input class="price" value="fred" /> 
<input id="total" /> 

Пересмотренный код:

function totalPrice() { 
    var total = 0; 
    var prices = document.getElementsByClassName('price'); 
    var len = prices.length; 
    for (var i = 0; i < len; i++) { 
    total += isNaN(parseInt(prices[i].value, 10)) ? 0 : parseInt(prices[i].value, 10); 
    } 
    document.getElementById('total').value = total; 
} 
totalPrice(); 
Смежные вопросы