Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2011, 20:27
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2011, 16:26
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 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>
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2011, 17:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2011, 18:07
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

monolithed, да, так действительно лучше.
Вот как из говна конфетку делают.
А что это за палочка e|0 ?
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2011, 18:13
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Matre
А что это за палочка e|0
побитовый оператор))

alert(1.24586975469|0);
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2011, 18:30
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Круто.

А

1.7|0


даёт единицу, т.е. e|0 не аналог Math.round(e)
И зачем speed в таймере делить на 100 каждый раз, когда можно заранее вычислить? Про приведение к строке distance каждый раз я вообще молчу.

А что это за конструкция (function () {... ? Много раз видел, никак не могу понять, после скобочки вот эта штучка function должна приводить к TypeError, не?
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2011, 19:17
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2011, 19:20
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Я вот тоже не понял, что хотел сказать monolithed. Кстати, Matre, а зачем каждый раз округлять e, если можно один раз округлить speed при инициализации?
Насчет конструкции, грамотно описано здесь
Ответить с цитированием
  #9 (permalink)  
Старый 28.05.2011, 21:01
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
нет, этот тип функция относится к FunctionExpression (Функция-выражение)
В скобочках можна писать только цыферки, а function должно выдавать тайп-еррор.

Цитата:
Кстати, Matre, а зачем каждый раз округлять e, если можно один раз округлить speed при инициализации?
Точность теряется же.
Ответить с цитированием
  #10 (permalink)  
Старый 28.05.2011, 21:31
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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, []));

или я не так понял вопрос?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Помогите нубу Fongolcs Работа 34 19.05.2010 22:45
Помогите новичку с выпадающим списком interest Элементы интерфейса 5 19.05.2010 13:15
Люди, ПОМОГИТЕ! Bel666 jQuery 11 27.04.2010 15:38