27.05.2011, 20:27
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Помогите с массивом
<form name="pole">
Введите скорость передвижения(км/ч):<br><input type="text" value="" name="skor"><br>
Введите расстояние(км):<br><input type="text" value="" name="rast"><br>
Результат(ч):<br><input type="text" value="" name="res"><br>
Результат(сек):<br><input type="text" value="" name="sec"><br>
<input type="button" value="Рассчет" onclick="chet()">
</form>
<input type="button" onClick="plus()" value="Начать"/>
<img id="img2" src="http://s45.radikal.ru/i110/1105/74/9ac056cb9f5a.png" name="img">
<script>
function chet() {
var rastoin = document.pole.rast.value;
var sk = document.pole.skor.value;
var result = rastoin/sk
document.pole.res.value = result
var seconds = result*3600
document.pole.sec.value = seconds
}
function plus() {
var image = new Array(document.getElementById('img2'))
for(i=0;i<10;i++){
//<== Что надо вставить сюда???
}
var sec = seconds/10
setTimeInterval(plus,sec)
}
</script>
Я пока что не знаю будет ли это вообще работать,но что надо написать чтобы image повторялась согласно for?То есть-вначале картинки нет,потом (по интревалу) добавляется ещё одна,и т.д.
P.S.смысл скрипта такой:пишешь скорость,расстояние и появляется что-то вроде строки состояния...
Последний раз редактировалось 9xakep, 27.05.2011 в 22:20.
|
|
28.05.2011, 16:26
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
<div id='state' style='background: #555555; height: 20px; width: 0;'>
</div>
<script type='text/javascript'>
var speed = +prompt("Введите скорость:") / 100,
distance = +prompt("Введите расстояние:"),
e = 0;
setTimeout(function () {
e += speed;
document.getElementById("state").style.width = Math.round(e) + "px";
if (e <= distance)
setTimeout(arguments.callee, 10);
}, 10);
</script>
|
|
28.05.2011, 17:01
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Matre,
на всякий))
<div id='state' style='background: #555555; height: 20px; width: 0;'>
</div>
<script type='text/javascript'>
var speed = prompt("Введите скорость:") / 100,
distance = prompt("Введите расстояние:"), i = 0;
(function () {
i += speed;
document.getElementById("state").style.width = i + "px";
if (i <= distance)
setTimeout(arguments.callee, 10);
}());
</script>
Последний раз редактировалось monolithed, 28.05.2011 в 19:50.
|
|
28.05.2011, 18:07
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
monolithed, да, так действительно лучше.
Вот как из говна конфетку делают.
А что это за палочка e|0 ?
|
|
28.05.2011, 18:13
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Matre
|
А что это за палочка e|0
|
побитовый оператор))
alert(1.24586975469|0);
|
|
28.05.2011, 18:30
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
Круто.
А
1.7|0
даёт единицу, т.е. e|0 не аналог Math.round(e)
И зачем speed в таймере делить на 100 каждый раз, когда можно заранее вычислить? Про приведение к строке distance каждый раз я вообще молчу.
А что это за конструкция (function () {... ? Много раз видел, никак не могу понять, после скобочки вот эта штучка function должна приводить к TypeError, не?
|
|
28.05.2011, 19:17
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Matre
|
даёт единицу, т.е. e|0 не аналог Math.round(e)
|
можно сказать аналог Math.floor();
Сообщение от Matre
|
И зачем speed в таймере делить на 100 каждый раз, когда можно заранее вычислить? Про приведение к строке distance каждый раз я вообще молчу.
|
согласен, что некорректно, и для реального использования тут еще много чего можно подправить, а так просто наглядней (чтобы для ТС не было загадкой как это prompt()/100), не более
Сообщение от Matre
|
А что это за конструкция (function () {}());
|
это инкапсуляция на основе лексического замыкания. Функция создается и сразу вызывается, а все объявленные в ней переменные являются локальными.
Сообщение от Matre
|
function должна приводить к TypeError, не
|
нет, этот тип функция относится к FunctionExpression (Функция-выражение)
Последний раз редактировалось monolithed, 28.05.2011 в 19:32.
|
|
28.05.2011, 19:20
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Я вот тоже не понял, что хотел сказать monolithed. Кстати, Matre, а зачем каждый раз округлять e, если можно один раз округлить speed при инициализации?
Насчет конструкции, грамотно описано здесь
|
|
28.05.2011, 21:01
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
Цитата:
|
нет, этот тип функция относится к FunctionExpression (Функция-выражение)
|
В скобочках можна писать только цыферки, а function должно выдавать тайп-еррор.
Цитата:
|
Кстати, Matre, а зачем каждый раз округлять e, если можно один раз округлить speed при инициализации?
|
Точность теряется же.
|
|
28.05.2011, 21:31
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Matre
|
В скобочках можна писать только цыферки, а function должно выдавать тайп-еррор.
|
(function(key, array) {
for(i in key) {
!/\d+/g.test(i) && array.push(i);
}
alert(array);
}(window.history, []));
или я не так понял вопрос?
|
|
|
|