16.09.2015, 20:56
|
Аспирант
|
|
Регистрация: 06.09.2015
Сообщений: 61
|
|
У меня сейчас нету желания разбираться что для чего нужно.
Давайте я вам лучше расскажу, что для чего нужно, а вы решите, куда что вставлять. Заодно и попрактикуетесь.
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;
Дальше, я думаю, поймете, что делать. ))
Последний раз редактировалось nesnayka, 16.09.2015 в 21:00.
|
|
16.09.2015, 21:09
|
Профессор
|
|
Регистрация: 15.09.2015
Сообщений: 180
|
|
Спасибо, но там не ф-ция задержки, а запуск ф-ции через каждую секунду, чтобы не ставить кнопку.
|
|
16.09.2015, 21:29
|
Аспирант
|
|
Регистрация: 06.09.2015
Сообщений: 61
|
|
Сообщение от Sav2907
|
Спасибо, но там не ф-ция задержки, а запуск ф-ции через каждую секунду, чтобы не ставить кнопку.
|
Ну да, туплю...
|
|
16.09.2015, 22:41
|
Профессор
|
|
Регистрация: 15.09.2015
Сообщений: 180
|
|
Сообщение от nesnayka
|
Что бы работала сумма, замените вот это:
chas.value = sum;
вместо chas нужно поставить document.getElementById("тут ид блока в который нужно вставить сумму"):
document.getElementById("...").value = sum;
Дальше, я думаю, поймете, что делать. ))
|
Помогите еще раз, вставил id , но не работает
document.getElementById("chas").value = sum;
|
|
17.09.2015, 00:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,120
|
|
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"/> <input id="chs1" size="4" disabled/> 11.<input id="hvl11" size="2"><input id="sht11" size="2"/> <input id="chs11" size="4" disabled/> 21.<input id="hvl21" size="2"><input id="sht21" size="2"/> <input id="chs21" size="4" disabled/><br />
02.<input id="hvl2" size="2"><input id="sht2" size="2"/> <input id="chs2" size="4" disabled/> 12.<input id="hvl12" size="2"><input id="sht12" size="2"/> <input id="chs12" size="4" disabled/> 22.<input id="hvl22" size="2"><input id="sht22" size="2"/> <input id="chs22" size="4" disabled/><br />
03.<input id="hvl3" size="2"><input id="sht3" size="2"/> <input id="chs3" size="4" disabled/> 13.<input id="hvl13" size="2"><input id="sht13" size="2"/> <input id="chs13" size="4" disabled/> 23.<input id="hvl23" size="2"><input id="sht23" size="2"/> <input id="chs23" size="4" disabled/><br />
04.<input id="hvl4" size="2"><input id="sht4" size="2"/> <input id="chs4" size="4" disabled/> 14.<input id="hvl14" size="2"><input id="sht14" size="2"/> <input id="chs14" size="4" disabled/> 24.<input id="hvl24" size="2"><input id="sht24" size="2"/> <input id="chs24" size="4" disabled/><br />
05.<input id="hvl5" size="2"><input id="sht5" size="2"/> <input id="chs5" size="4" disabled/> 15.<input id="hvl15" size="2"><input id="sht15" size="2"/> <input id="chs15" size="4" disabled/> 25.<input id="hvl25" size="2"><input id="sht25" size="2"/> <input id="chs25" size="4" disabled/><br />
06.<input id="hvl6" size="2"><input id="sht6" size="2"/> <input id="chs6" size="4" disabled/> 16.<input id="hvl16" size="2"><input id="sht16" size="2"/> <input id="chs16" size="4" disabled/> 26.<input id="hvl26" size="2"><input id="sht26" size="2"/> <input id="chs26" size="4" disabled/><br />
07.<input id="hvl7" size="2"><input id="sht7" size="2"/> <input id="chs7" size="4" disabled/> 17.<input id="hvl17" size="2"><input id="sht17" size="2"/> <input id="chs17" size="4" disabled/> 27.<input id="hvl27" size="2"><input id="sht27" size="2"/> <input id="chs27" size="4" disabled/><br />
08.<input id="hvl8" size="2"><input id="sht8" size="2"/> <input id="chs8" size="4" disabled/> 18.<input id="hvl18" size="2"><input id="sht18" size="2"/> <input id="chs18" size="4" disabled/> 28.<input id="hvl28" size="2"><input id="sht28" size="2"/> <input id="chs28" size="4" disabled/><br />
09.<input id="hvl9" size="2"><input id="sht9" size="2"/> <input id="chs9" size="4" disabled/> 19.<input id="hvl19" size="2"><input id="sht19" size="2"/> <input id="chs19" size="4" disabled/> 29.<input id="hvl29" size="2"><input id="sht29" size="2"/> <input id="chs29" size="4" disabled/><br />
10.<input id="hvl10" size="2"><input id="sht10" size="2"/> <input id="chs10" size="4" disabled/> 20.<input id="hvl20" size="2"><input id="sht20" size="2"/> <input id="chs20" size="4" disabled/> 30.<input id="hvl30" size="2"><input id="sht30" size="2"/> <input id="chs30" size="4" disabled/><br /><br />
Общее время: <input id="chas" size="2" disabled/> Эффективность: <input id="efekt" size="2" disabled/> Премия: <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>
Последний раз редактировалось рони, 17.09.2015 в 07:26.
|
|
17.09.2015, 00:50
|
Аспирант
|
|
Регистрация: 06.09.2015
Сообщений: 61
|
|
Сообщение от 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>
У Рони более изящно и подходит для общего случая, но для вас, как для новичка, менее понятно. )
Последний раз редактировалось nesnayka, 17.09.2015 в 00:59.
|
|
17.09.2015, 00:59
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
nesnayka, да хватит уже извращать javascript, 2015 год, а Вы все новичкам es3 впариваете =)
|
|
17.09.2015, 01:15
|
Аспирант
|
|
Регистрация: 06.09.2015
Сообщений: 61
|
|
Lemme,
Правильно, давайте грузить людей сразу фреймворками и пусть они теряются при виде стандартных конструкций.
Зачем нам алфавит, мы язык по разговорнику учим! ))
Если кому-то в ВУЗе преподавали все систематично и они с этим знакомы априори, то нужно хотя бы помнить, что не всем довелось получать знания в верситетах. )))
Тут помогают новичкам или я на подразделе github'a?
|
|
17.09.2015, 01:25
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
nesnayka, разве я о фреймворках сказал что-то? Я сказал, что нужно использовать хотя бы es5
Цитата:
|
Тут помогают новичкам
|
Верно, но, новичков бывают два типа:
1) Дайте намек, а я постараюсь все сделать сам, если че, спрошу =)
2) Дайтетемневсеясамнубничег онемогуимочьнехочу
И раз уж так, то "если новичок", то ему нужно показать простой код, а не из месиво из циклов и.т.д (о которых,вероятно, он даже и не знает, если рассуждать ка вы).
Цитата:
|
Если кому-то в ВУЗе преподавали все систематично
|
Круто! Я в вузе не учился, но проблема в том, что вы преподносите информацию так же, как и в ВУЗах (устаревшую).
А насчет новичков, то я сам новичок.
p.s не буду ничего больше писать, ибо спровоцирую срач =)
Последний раз редактировалось Lemme, 17.09.2015 в 01:40.
|
|
17.09.2015, 01:46
|
Аспирант
|
|
Регистрация: 06.09.2015
Сообщений: 61
|
|
Сообщение от Lemme
|
Я в вузе не учился, но проблема в том, что вы преподносите информацию так же, как и в ВУЗах (устаревшую).
|
Откуда знаете, как там преподносят, раз не учились.
Да я ж утрировано о фреймворках....
Просто есть у меня знакомый, который много всяких заморочек делал на jQ, а как увидел ..elementBy.. (который не так уж и устарел и повсеместно юзается, даже иногда в недрах той самой jQ), так и в ступор впал.
ИМХО, глупо изучать одни новшества языка, не вдаваясь в историю его развития - не поймешь самой сути инструмента. А историю лучше учить с начала.
|
|
|
|