Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите с кодом. Поиск и вывод нужного значения (https://javascript.ru/forum/dom-window/58325-pomogite-s-kodom-poisk-i-vyvod-nuzhnogo-znacheniya.html)

Sav2907 15.09.2015 17:44

Помогите с кодом. Поиск и вывод нужного значения
 
Вложений: 1
Здравствуйте, помогите решить проблему. Есть код который считает эффективность, и есть табличка в которой указана премия, относительно той эффективности. Как сделать чтобы в поле "Премия", была премия

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
</head>

<body>
01.<input id="hvl1" size="2"><input id="sht1" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs1" size="4" disabled/>&nbsp;11.<input id="hvl11" size="2"><input id="sht11" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs11" size="4" disabled/>&nbsp;21.<input id="hvl21" size="2"><input id="sht21" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs21" size="4" disabled/><br />
02.<input id="hvl2" size="2"><input id="sht2" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs2" size="4" disabled/>&nbsp;12.<input id="hvl12" size="2"><input id="sht12" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs12" size="4" disabled/>&nbsp;22.<input id="hvl22" size="2"><input id="sht22" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs22" size="4" disabled/><br />
03.<input id="hvl3" size="2"><input id="sht3" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs3" size="4" disabled/>&nbsp;13.<input id="hvl13" size="2"><input id="sht13" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs13" size="4" disabled/>&nbsp;23.<input id="hvl23" size="2"><input id="sht23" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs23" size="4" disabled/><br />
04.<input id="hvl4" size="2"><input id="sht4" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs4" size="4" disabled/>&nbsp;14.<input id="hvl14" size="2"><input id="sht14" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs14" size="4" disabled/>&nbsp;24.<input id="hvl24" size="2"><input id="sht24" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs24" size="4" disabled/><br />
05.<input id="hvl5" size="2"><input id="sht5" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs5" size="4" disabled/>&nbsp;15.<input id="hvl15" size="2"><input id="sht15" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs15" size="4" disabled/>&nbsp;25.<input id="hvl25" size="2"><input id="sht25" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs25" size="4" disabled/><br />
06.<input id="hvl6" size="2"><input id="sht6" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs6" size="4" disabled/>&nbsp;16.<input id="hvl16" size="2"><input id="sht16" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs16" size="4" disabled/>&nbsp;26.<input id="hvl26" size="2"><input id="sht26" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs26" size="4" disabled/><br />
07.<input id="hvl7" size="2"><input id="sht7" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs7" size="4" disabled/>&nbsp;17.<input id="hvl17" size="2"><input id="sht17" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs17" size="4" disabled/>&nbsp;27.<input id="hvl27" size="2"><input id="sht27" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs27" size="4" disabled/><br />
08.<input id="hvl8" size="2"><input id="sht8" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs8" size="4" disabled/>&nbsp;18.<input id="hvl18" size="2"><input id="sht18" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs18" size="4" disabled/>&nbsp;28.<input id="hvl28" size="2"><input id="sht28" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs28" size="4" disabled/><br />
09.<input id="hvl9" size="2"><input id="sht9" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs9" size="4" disabled/>&nbsp;19.<input id="hvl19" size="2"><input id="sht19" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs19" size="4" disabled/>&nbsp;29.<input id="hvl29" size="2"><input id="sht29" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs29" size="4" disabled/><br />
10.<input id="hvl10" size="2"><input id="sht10" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs10" size="4" disabled/>&nbsp;20.<input id="hvl20" size="2"><input id="sht20" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs20" size="4" disabled/>&nbsp;30.<input id="hvl30" size="2"><input id="sht30" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs30" size="4" disabled/><br /><br />

Общее время: <input id="chas" size="2" disabled/>&nbsp;Эффективность: <input id="efekt" size="2" disabled/> &nbsp;Премия: <input id="prem" size="2" disabled/>

</body>
<script>
var timerId = setInterval(function() {
	chs1.value=Number(hvl1.value) * Number(sht1.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs2.value=Number(hvl2.value) * Number(sht2.value) / 100;
	
} , 1000);
var timerId = setInterval(function() {
	chs3.value=Number(hvl3.value) * Number(sht3.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs4.value=Number(hvl4.value) * Number(sht4.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs5.value=Number(hvl5.value) * Number(sht5.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs6.value=Number(hvl6.value) * Number(sht6.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs7.value=Number(hvl7.value) * Number(sht7.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs8.value=Number(hvl8.value) * Number(sht8.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs9.value=Number(hvl9.value) * Number(sht9.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs10.value=Number(hvl10.value) * Number(sht10.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs11.value=Number(hvl11.value) * Number(sht11.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs12.value=Number(hvl12.value) * Number(sht12.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs13.value=Number(hvl13.value) * Number(sht13.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs14.value=Number(hvl14.value) * Number(sht14.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs15.value=Number(hvl15.value) * Number(sht15.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs16.value=Number(hvl16.value) * Number(sht16.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs17.value=Number(hvl17.value) * Number(sht17.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs18.value=Number(hvl18.value) * Number(sht18.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs19.value=Number(hvl19.value) * Number(sht19.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs20.value=Number(hvl20.value) * Number(sht20.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs21.value=Number(hvl21.value) * Number(sht21.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs22.value=Number(hvl22.value) * Number(sht22.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs23.value=Number(hvl23.value) * Number(sht23.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs24.value=Number(hvl24.value) * Number(sht24.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs25.value=Number(hvl25.value) * Number(sht25.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs26.value=Number(hvl26.value) * Number(sht26.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs27.value=Number(hvl27.value) * Number(sht27.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs28.value=Number(hvl28.value) * Number(sht28.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs29.value=Number(hvl29.value) * Number(sht29.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chs30.value=Number(hvl30.value) * Number(sht30.value) / 100;
	
} , 1000);

var timerId = setInterval(function() {
	chas.value=Number(chs1.value) + Number(chs2.value) + Number(chs3.value) + Number(chs4.value) + Number(chs5.value) + Number(chs6.value) + Number(chs7.value) + Number(chs8.value) + Number(chs9.value) + Number(chs10.value) + Number(chs11.value) + Number(chs12.value) + Number(chs13.value) + Number(chs14.value) + Number(chs15.value) + Number(chs16.value) + Number(chs17.value) + Number(chs18.value) + Number(chs19.value) + Number(chs20.value) + Number(chs21.value) + Number(chs22.value) + Number(chs23.value) + Number(chs24.value) + Number(chs25.value) + Number(chs26.value) + Number(chs27.value) + Number(chs28.value) + Number(chs29.value) + Number(chs30.value);

	
} , 1000);

var timerId = setInterval(function() {
	efekt.value=Number(chas.value) / '480' * 100 .toFixed(2);
	
} , 1000);


</script>
</html>

Sav2907 15.09.2015 17:46

Если эффективность ниже 50, премия "0"

nesnayka 16.09.2015 12:44

Для начала неплохо бы это все:
.....
    var timerId = setInterval(function() {
	    chs27.value=Number(hvl27.value) * Number(sht27.value) / 100;
	} , 1000);

	var timerId = setInterval(function() {
	    chs28.value=Number(hvl28.value) * Number(sht28.value) / 100;
	} , 1000);
.......

засунуть в цикл и заменить
chs28.value=Number(hvl28.value) * Number(sht28.value) / 100;

условием
if(Number(hvl28.value)<50)
  chs28.value=0;
else
  chs28.value=Number(hvl28.value) * Number(sht28.value) / 100;

Sav2907 16.09.2015 13:31

Немного объясню, там где Chs1-chs30 так и должно быть. Потому что потом выводится общая сумма из всех значений. Условие возможно нужно поставить для суммы всех значений, а это chas.value?

Sav2907 16.09.2015 13:41

Или даже от efekt.value.
Эсли efekt.value > 50 тогда...
Помогите пожалуйста

nesnayka 16.09.2015 13:44

Сумму тоже через цикл можно:
var sum = 0;
for(i=1;i<=30;i++){
  sum += parseFloat(document.getElementById('chs'+i).value);
}
chas.value = sum;


И тот весь огромный кусок вычислений:
var timerId = setInterval(function() {
  for(i=1;i<=30;i++){
    document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('chs'+i).value) / 100;
  }
} , 1000);


Только я там не совсем разобрался какое поле в условии проверять нужно

nesnayka 16.09.2015 13:56

Цитата:

Сообщение от Sav2907
там где Chs1-chs30 так и должно быть

Так не должно быть.
Я еще понимаю 5-6 значений перебрать, да и то, когда цикличный их перебор не очевиден. (Тут же обсуждали ситуацию по поводу присваивания .hover нескольким элементам), но создание 30 функций там, где явно напрашивается цикл - не комильфо. )

Sav2907 16.09.2015 17:50

В первом поле пишем 3.5 это время, во втором поле 2000 это штуки, в третьем поле высчитывается время на заказ, это 70.
В поле "Общее время", это время, суммируется. Поле "Эффективность" высчитывается по формуле общее время делим на 480, и умножаем на 100. Эта эффективность есть в таблице в первой колонке. Если она равна или больше 50, то начисляется "Премия" (она в таблице во второй колонке), которая должна как-то отображаться в поле "Премия". Я в программировании новичек, поэтому прошу показать что и как делать.

Sav2907 16.09.2015 18:05

Что-то не так
 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
</head>

<body>
01.<input id="hvl1" size="2"><input id="sht1" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs1" size="4" disabled/>&nbsp;11.<input id="hvl11" size="2"><input id="sht11" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs11" size="4" disabled/>&nbsp;21.<input id="hvl21" size="2"><input id="sht21" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs21" size="4" disabled/><br />
02.<input id="hvl2" size="2"><input id="sht2" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs2" size="4" disabled/>&nbsp;12.<input id="hvl12" size="2"><input id="sht12" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs12" size="4" disabled/>&nbsp;22.<input id="hvl22" size="2"><input id="sht22" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs22" size="4" disabled/><br />
03.<input id="hvl3" size="2"><input id="sht3" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs3" size="4" disabled/>&nbsp;13.<input id="hvl13" size="2"><input id="sht13" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs13" size="4" disabled/>&nbsp;23.<input id="hvl23" size="2"><input id="sht23" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs23" size="4" disabled/><br />
04.<input id="hvl4" size="2"><input id="sht4" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs4" size="4" disabled/>&nbsp;14.<input id="hvl14" size="2"><input id="sht14" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs14" size="4" disabled/>&nbsp;24.<input id="hvl24" size="2"><input id="sht24" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs24" size="4" disabled/><br />
05.<input id="hvl5" size="2"><input id="sht5" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs5" size="4" disabled/>&nbsp;15.<input id="hvl15" size="2"><input id="sht15" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs15" size="4" disabled/>&nbsp;25.<input id="hvl25" size="2"><input id="sht25" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs25" size="4" disabled/><br />
06.<input id="hvl6" size="2"><input id="sht6" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs6" size="4" disabled/>&nbsp;16.<input id="hvl16" size="2"><input id="sht16" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs16" size="4" disabled/>&nbsp;26.<input id="hvl26" size="2"><input id="sht26" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs26" size="4" disabled/><br />
07.<input id="hvl7" size="2"><input id="sht7" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs7" size="4" disabled/>&nbsp;17.<input id="hvl17" size="2"><input id="sht17" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs17" size="4" disabled/>&nbsp;27.<input id="hvl27" size="2"><input id="sht27" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs27" size="4" disabled/><br />
08.<input id="hvl8" size="2"><input id="sht8" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs8" size="4" disabled/>&nbsp;18.<input id="hvl18" size="2"><input id="sht18" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs18" size="4" disabled/>&nbsp;28.<input id="hvl28" size="2"><input id="sht28" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs28" size="4" disabled/><br />
09.<input id="hvl9" size="2"><input id="sht9" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs9" size="4" disabled/>&nbsp;19.<input id="hvl19" size="2"><input id="sht19" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs19" size="4" disabled/>&nbsp;29.<input id="hvl29" size="2"><input id="sht29" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs29" size="4" disabled/><br />
10.<input id="hvl10" size="2"><input id="sht10" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs10" size="4" disabled/>&nbsp;20.<input id="hvl20" size="2"><input id="sht20" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs20" size="4" disabled/>&nbsp;30.<input id="hvl30" size="2"><input id="sht30" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs30" size="4" disabled/><br /><br />

Общее время: <input id="chas" size="2" disabled/>&nbsp;Эффективность: <input id="efekt" size="2" disabled/> &nbsp;Премия: <input id="prem" size="2" disabled/>

</body>
<script>

	

var timerId = setInterval(function() {

  for(i=1;i<=30;i++){

    document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('chs'+i).value) / 100;

  }

} , 1000);

var sum = 0;

for(i=1;i<=30;i++){

  sum += parseFloat(document.getElementById('chs'+i).value);

}

chas.value = sum;


var timerId = setInterval(function() {
	efekt.value=Number(chas.value) / '480' * 100;
		
} , 1000);


</script>
</html>

Sav2907 16.09.2015 18:41

Цитата:

Сообщение от nesnayka (Сообщение 388845)
И тот весь огромный кусок вычислений:
var timerId = setInterval(function() {
  for(i=1;i<=30;i++){
    document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('chs'+i).value) / 100;
  }
} , 1000);


Только я там не совсем разобрался какое поле в условии проверять нужно

parseFloat(document.getElementById('sht'+i).value)

А сумма не работает

nesnayka 16.09.2015 20:56

У меня сейчас нету желания разбираться что для чего нужно.
Давайте я вам лучше расскажу, что для чего нужно, а вы решите, куда что вставлять. Заодно и попрактикуетесь.
for(i=1;i<=30;i++){

}


Это цикл, который перебирает числа от 1-го до 30-ти.
'chs'+i
- id элементов
chs1, chs2, ..., chs30
.

document.getElementById('chs'+i).value
- это значение i-того инпута chs
если мы делаем так:
document.getElementById('chs'+i).value = 100500;

то инпуту с id = 'chs'+i присваиваивается значение 100500 (внутрь него вставляется 100500).
если делаем так:
var xxx = document.getElementById('chs'+i).value;

то переменной ххх присваиваивается значение из инпута с id = 'chs'+i (берется то, что у него внутри).

parseFloat - это преобразование текстовых данных из инпута в десятичное число.

Соответственно:
document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('chs'+i).value) / 100;

в инпут с id = 'chs'+i вставляется то, что есть в этом же инпуте, помноженное на то что в инпуте с id = 'hvl'+i и деленное на 100.

не нужна там ф-ция задержки:
var timerId = setInterval(function() {

} , 1000);


там нужно все затолкать в какую-то ф-цию и вызывать ее по клику, например.

Что бы работала сумма, замените вот это:
chas.value = sum;

вместо chas нужно поставить document.getElementById("тут ид блока в который нужно вставить сумму"):

document.getElementById("...").value = sum;


Дальше, я думаю, поймете, что делать. ))

Sav2907 16.09.2015 21:09

Спасибо, но там не ф-ция задержки, а запуск ф-ции через каждую секунду, чтобы не ставить кнопку.

nesnayka 16.09.2015 21:29

Цитата:

Сообщение от Sav2907 (Сообщение 388892)
Спасибо, но там не ф-ция задержки, а запуск ф-ции через каждую секунду, чтобы не ставить кнопку.

Ну да, туплю... :-?

Sav2907 16.09.2015 22:41

Цитата:

Сообщение от nesnayka (Сообщение 388891)
Что бы работала сумма, замените вот это:
chas.value = sum;

вместо chas нужно поставить document.getElementById("тут ид блока в который нужно вставить сумму"):

document.getElementById("...").value = sum;


Дальше, я думаю, поймете, что делать. ))

Помогите еще раз, вставил id , но не работает
document.getElementById("chas").value = sum;

рони 17.09.2015 00:30

Sav2907,
при условии что премия за эффект 80 в вашей таблице вычислена неверно, иначе пишите обьект со всеми значениями{эффект : премия, ...}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
</head>

<body>
01.<input id="hvl1" size="2"><input id="sht1" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs1" size="4" disabled/>&nbsp;11.<input id="hvl11" size="2"><input id="sht11" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs11" size="4" disabled/>&nbsp;21.<input id="hvl21" size="2"><input id="sht21" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs21" size="4" disabled/><br />
02.<input id="hvl2" size="2"><input id="sht2" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs2" size="4" disabled/>&nbsp;12.<input id="hvl12" size="2"><input id="sht12" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs12" size="4" disabled/>&nbsp;22.<input id="hvl22" size="2"><input id="sht22" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs22" size="4" disabled/><br />
03.<input id="hvl3" size="2"><input id="sht3" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs3" size="4" disabled/>&nbsp;13.<input id="hvl13" size="2"><input id="sht13" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs13" size="4" disabled/>&nbsp;23.<input id="hvl23" size="2"><input id="sht23" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs23" size="4" disabled/><br />
04.<input id="hvl4" size="2"><input id="sht4" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs4" size="4" disabled/>&nbsp;14.<input id="hvl14" size="2"><input id="sht14" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs14" size="4" disabled/>&nbsp;24.<input id="hvl24" size="2"><input id="sht24" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs24" size="4" disabled/><br />
05.<input id="hvl5" size="2"><input id="sht5" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs5" size="4" disabled/>&nbsp;15.<input id="hvl15" size="2"><input id="sht15" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs15" size="4" disabled/>&nbsp;25.<input id="hvl25" size="2"><input id="sht25" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs25" size="4" disabled/><br />
06.<input id="hvl6" size="2"><input id="sht6" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs6" size="4" disabled/>&nbsp;16.<input id="hvl16" size="2"><input id="sht16" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs16" size="4" disabled/>&nbsp;26.<input id="hvl26" size="2"><input id="sht26" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs26" size="4" disabled/><br />
07.<input id="hvl7" size="2"><input id="sht7" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs7" size="4" disabled/>&nbsp;17.<input id="hvl17" size="2"><input id="sht17" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs17" size="4" disabled/>&nbsp;27.<input id="hvl27" size="2"><input id="sht27" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs27" size="4" disabled/><br />
08.<input id="hvl8" size="2"><input id="sht8" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs8" size="4" disabled/>&nbsp;18.<input id="hvl18" size="2"><input id="sht18" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs18" size="4" disabled/>&nbsp;28.<input id="hvl28" size="2"><input id="sht28" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs28" size="4" disabled/><br />
09.<input id="hvl9" size="2"><input id="sht9" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs9" size="4" disabled/>&nbsp;19.<input id="hvl19" size="2"><input id="sht19" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs19" size="4" disabled/>&nbsp;29.<input id="hvl29" size="2"><input id="sht29" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs29" size="4" disabled/><br />
10.<input id="hvl10" size="2"><input id="sht10" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs10" size="4" disabled/>&nbsp;20.<input id="hvl20" size="2"><input id="sht20" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs20" size="4" disabled/>&nbsp;30.<input id="hvl30" size="2"><input id="sht30" size="2"/>&nbsp;&nbsp;&nbsp;<input id="chs30" size="4" disabled/><br /><br />

Общее время: <input id="chas" size="2" disabled/>&nbsp;Эффективность: <input id="efekt" size="2" disabled/> &nbsp;Премия: <input id="prem" size="2" disabled/>

</body>
<script>
var hv = document.querySelectorAll("[id^='hv']"),
    sht = document.querySelectorAll("[id^='sht']"),
    chs = document.querySelectorAll("[id^='chs']");

function fn() {
    var a = 0;
    [].forEach.call(hv, function(c, b) {
        a += chs[b].value = (+c.value || 0) * (+sht[b].value || 0) / 100
    });
    document.querySelector("#chas").value = a;
    var b = (a / 480 * 100).toFixed(2);
    document.querySelector("#efekt").value = b;
    var c = 0, n = .5;
    if (50 <= b)
        for (var c = 20, d = 51; d < b | 0; d++) {
          if (d > 200) break;
          if (d == 76) n = 1.5;
          if (d == 113) n = .5;
          c += n;
        }
    document.querySelector("#prem").value = c
}
[].forEach.call(document.querySelectorAll("[id^='hv'],[id^='sht']"), function(a) {
    a.addEventListener("input", fn)
});</script>
</html>

nesnayka 17.09.2015 00:50

Цитата:

Сообщение от Sav2907
Помогите еще раз, вставил id , но не работает

Держите, в тех понятиях, которые я расписывал:
<script>
var timerId = setInterval(function() {
var sum = 0;
  for(i=1;i<=30;i++){
    document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('sht'+i).value) / 100; // - перемножаем 1-ю колонку на вторую и записываем в третью
  sum += parseFloat(document.getElementById('chs'+i).value); // - суммируем все из 3-й колонки
  }
  document.getElementById('chas').value = sum; // - записываем сумму в поле "Общее время"
  document.getElementById('efekt').value=parseFloat(document.getElementById('chas').value) / 480 * 100; // - высчитываем эффект и записываем в соотв. поле.
  if(parseFloat(document.getElementById('efekt').value)<50) // - если эффект. <50, 
    document.getElementById('prem').value = 0; // - в поле "Премия " пишем 0
  else // - если больше или равно
    document.getElementById('prem').value = '25%'; // - в поле "Премия " пишем 25% (ну или что туда нужно)
} , 1000);
</script>

У Рони более изящно и подходит для общего случая, но для вас, как для новичка, менее понятно. )

Lemme 17.09.2015 00:59

nesnayka, да хватит уже извращать javascript, 2015 год, а Вы все новичкам es3 впариваете =)

nesnayka 17.09.2015 01:15

Lemme,
Правильно, давайте грузить людей сразу фреймворками и пусть они теряются при виде стандартных конструкций.
Зачем нам алфавит, мы язык по разговорнику учим! ))
Если кому-то в ВУЗе преподавали все систематично и они с этим знакомы априори, то нужно хотя бы помнить, что не всем довелось получать знания в верситетах. )))
Тут помогают новичкам или я на подразделе github'a?

Lemme 17.09.2015 01:25

nesnayka, разве я о фреймворках сказал что-то? Я сказал, что нужно использовать хотя бы es5 :D

Цитата:

Тут помогают новичкам
Верно, но, новичков бывают два типа:
1) Дайте намек, а я постараюсь все сделать сам, если че, спрошу =)
2) Дайтетемневсеясамнубничег онемогуимочьнехочу

И раз уж так, то "если новичок", то ему нужно показать простой код, а не из месиво из циклов и.т.д (о которых,вероятно, он даже и не знает, если рассуждать ка вы).
Цитата:

Если кому-то в ВУЗе преподавали все систематично
Круто! Я в вузе не учился, но проблема в том, что вы преподносите информацию так же, как и в ВУЗах (устаревшую).

А насчет новичков, то я сам новичок.

p.s не буду ничего больше писать, ибо спровоцирую срач =)

nesnayka 17.09.2015 01:46

Цитата:

Сообщение от Lemme
Я в вузе не учился, но проблема в том, что вы преподносите информацию так же, как и в ВУЗах (устаревшую).

Откуда знаете, как там преподносят, раз не учились. ;)
Да я ж утрировано о фреймворках....
Просто есть у меня знакомый, который много всяких заморочек делал на jQ, а как увидел ..elementBy.. (который не так уж и устарел и повсеместно юзается, даже иногда в недрах той самой jQ), так и в ступор впал.
ИМХО, глупо изучать одни новшества языка, не вдаваясь в историю его развития - не поймешь самой сути инструмента. А историю лучше учить с начала.

Sav2907 17.09.2015 05:20

Цитата:

Сообщение от nesnayka (Сообщение 388916)
Держите, в тех понятиях, которые я расписывал:
<script>
var timerId = setInterval(function() {
var sum = 0;
  for(i=1;i<=30;i++){
    document.getElementById('chs'+i).value=parseFloat(document.getElementById('hvl'+i).value) * parseFloat(document.getElementById('sht'+i).value) / 100; // - перемножаем 1-ю колонку на вторую и записываем в третью
  sum += parseFloat(document.getElementById('chs'+i).value); // - суммируем все из 3-й колонки
  }
  document.getElementById('chas').value = sum; // - записываем сумму в поле "Общее время"
  document.getElementById('efekt').value=parseFloat(document.getElementById('chas').value) / 480 * 100; // - высчитываем эффект и записываем в соотв. поле.
  if(parseFloat(document.getElementById('efekt').value)<50) // - если эффект. <50, 
    document.getElementById('prem').value = 0; // - в поле "Премия " пишем 0
  else // - если больше или равно
    document.getElementById('prem').value = '25%'; // - в поле "Премия " пишем 25% (ну или что туда нужно)
} , 1000);
</script>

У Рони более изящно и подходит для общего случая, но для вас, как для новичка, менее понятно. )

Не работает! Что-то где-то не так. Пересмотрите пожалуйста

Sav2907 17.09.2015 05:22

Цитата:

Сообщение от рони (Сообщение 388914)
Sav2907,
при условии что премия за эффект 80 в вашей таблице вычислена неверно, иначе пишите обьект со всеми значениями{эффект : премия, ...}
...

Спасибо, работает. Но там в таблице все верно, как переписать всю таблицу и вставить?

Sav2907 17.09.2015 05:35

Там сначала проценты увеличиваются на 0,5 а затем на 1,5 а потом снова на 0,5. Эффект от 50 до 76 по 0,5. От 76 до 113 по 1,5. А от 113 до 200 по 0,5. И если зножете, то действительно распишите чтобы я смог разобраться. спасибо вам за помощь.

рони 17.09.2015 07:27

Sav2907,
смотрите сообщение 15 снова, и не копируйте сообщения целиком

Sav2907 17.09.2015 10:08

Цитата:

Сообщение от рони (Сообщение 388944)
Sav2907,
смотрите сообщение 15 снова, и не копируйте сообщения целиком

Вижу вы изменили код, сейчас я с телефона зашел, проверить не могу. Но заранее благодарю. Что вы имеете в виду, не копировать сообщение?

Sav2907 17.09.2015 11:20

рони,
Можете еще описать скрипт, чтобы иметь представление что к чему

рони 17.09.2015 12:27

Цитата:

Сообщение от Sav2907
Что вы имеете в виду, не копировать сообщение?

целиком ненадо копировать, засоряет топик

Sav2907 17.09.2015 15:48

рони,
Все супер, работает. Только изменил
for (var c = 20.5, d = 51; d < b | 0; d++) {
потому что считало не так, как в таблице.
Опишите пожалуйста скрипт, это последняя просьба

Sav2907 17.09.2015 15:51

рони,
показывает все верно, только когда эффект 50, то премия 20.5 а не 20
Должно быть так, когда 50 то 20, а когда 100 то 69. Чтобы проверить впишите в первое поле 4, а во второй 6000, затем вместо 6000 введите 12000

Нашел вот так должно быть
for (var c = 20, d = 50; d < b | 0; d++) {

рони 17.09.2015 16:18

Sav2907,
вам виднее -- на картинке вы указали для 50 => 20, меняйте проверяйте :)

Sav2907 17.09.2015 16:54

Спасибо всем за помощь в решении поставленной задачи


Часовой пояс GMT +3, время: 21:35.