Jump to content
  • 0

Переменная постоянно увеличивается


Wasc
 Share

Question

Недавно зашел на сайт http://www.worldometers.info/ru/ и сразу заинтересовался переменными, которые постоянно увеличиваются за определенный промежуток времени.

Захотелось сразу сделать что-то подобное. Прогуглил, по теме ничего не нашел :huh: . Спасибо за содействие

P.S. Надо как-то прописать, чтобы переменная постоянно увеличивалась, при этом когда менялась, то записывалась куда-то. Насчет обнуления переменных каждый год сделаю сам.

Link to comment
Share on other sites

Recommended Posts

  • 0


<script language="JavaScript">
MinNum=0;
MaxNum=64281600;
<!--
function showDeaths()
{
while(MinNum<MaxNum)
{
MinNum=MinNum+1
}
}
{
setInterval('showDeaths()', 550);
}
// -->
</script>

Вот написал... Странно, что ничего на странице не отображает

Edited by Wasc
Link to comment
Share on other sites

  • 0

1) <script language="JavaScript"> что за археология? <script type="text/javascript">, и то уже даже так перестают писать.

2) Не вижу функции отображения на странице чего-либо, поэтому и не отображает

3) MinNum=MinNum+1 - это просто MinNum++, и можно убрать лишние скобки, но вернуть точку с запятой

4) Последняя-то пара скобок зачем?

5) Функция отработает один раз при первом вызове, MinNum достигнет значения MaxNum, при следующих вызовах функция не будет оказывать никакого воздействия на переменные

6) Странно, что инициализацию переменных ты в коментарий не взял, а тело функции взял. Да и зачем вообще тут комментарий? Это же уже не актуально.

Link to comment
Share on other sites

  • 0

Насчет первого так просто

2 - JavaScript только недавно начал изучать. Ориентируюсь по знакомому мне С++. Как отобразить не подскажете?

3 - Мне кажется разницы никакой. Твой способ чуть быстрее

4 - Мне легче определяться с разделами

5 - Не совсем понял что Вы сказали, но мне надо придумать как записывать постоянно меняющуюся переменную. Насчет максимального значения во первых оно будет достигаться ровно год, во вторых я думаю чтобы начать заного:

if(MinNum=MaxNum) MinNum=0 // Вставить после массива

6 - Хм, а обязательно разве брать их в {}?

Edited by Wasc
Link to comment
Share on other sites

  • 0

Год оно достигаться не будет, поскольку цикл while отработает очень быстро. Говоришь же, что знаешь c++. Так вот, твоя функция с while будет выполняться каждые 550 мс. И есть мнение, что за это время цикл даже успеет выполниться. Сброс переменной ничего не даст, просто цикл будет выполняться заново каждый раз.

А у тебя страница сайта будет год открыта? Героический поступок.

чтобы вывести что-то на страницу, можно использовать document.write, можно что-нибудь типа document.getElementById('id элемента').innerHTML+=переменная, а можно

sp=document.createElement('span');
sp.appendChild(document.createTextNode(переменная));
document.getElementById('id элемента'),appendChild(sp)

Может быть ничего не перепутал даже.

По 6-му пункту: комментарий не связан с {}

Link to comment
Share on other sites

  • 0

Если тебе нужно один раз, зачем вообще делать цикл?

Да, id нужно задать. Это некоторый родительский элемент, куда будут выводиться данные. Примерно два раза в секунду, как я понимаю.

Link to comment
Share on other sites

  • 0

Загуглил "задание id в JavaScript"

Собственно нашел мало чего стоящего, и думаю это мало чего не совсем то что мне нужно (точнее совсем не то).

Вобщем вопрос теперь к Вам. Может быть присвоением как нибудь типа: (MinNum).id="x-value".

Есть некая инфа тоже из гугла, что в ссылку в кодах html нужно написать этот id

Edited by Wasc
Link to comment
Share on other sites

  • 0

Спасибо огромное, все понятно теперь. Правда вот эта строка что делает? n = parseInt(n);

Кстати, как и ожидалось, элемент не будет сохранятся при перезагрузке страницы. Последний вопрос :yahoo: Есть ли какой-то способ постоянно сохранять значение в какой-нибудь файл? Было бы шикарно

Link to comment
Share on other sites

  • 0

С этого и нужно было начинать :)


<заголовки html>
<script type="text/javascript">
window.onload=function() {
var a=document.getElementById('a');
setInterval(function(){a.innerHTML=parseInt(a.innerHTML)+1;},200); //Раз прибавка по 5 в секунду, то интервал 1/5 секунды
}
</script>
<?
$start=15464;
$starttime=1308070000;
$current=$start+5*(time()-$starttime); //прибавка по 5 в секунду
echo '<span id="a">'.$current.'</span><span> человек курит трубку</span>';
?>

Я не думаю, что там какие-то особо другие формулы. y=x0+k*x, уравнение прямой :) k - скорость роста, x0 - начальное значение, x - текущая координата (временная). Процессы там скорее всего линейны по времени, а значит описываются именно прямой. Можешь применять любые другие формулы, но их нужно и на сервере и в яваскрипте задать одинаково.

Link to comment
Share on other sites

  • 0

Файл, который я написал, должен пройти через php-интерпретатор, если что.

По кукам очень быстро нигмится много информации

Ясный перец, что можно без php, формулу-то можно в яваскрипт перенести без проблем. Просто там может что-то из базы браться или ещё что-то такое. Из файла может быть подгружается.

Link to comment
Share on other sites

  • 0

Ясный перец, что можно без php, формулу-то можно в яваскрипт перенести без проблем. Просто там может что-то из базы браться или ещё что-то такое. Из файла может быть подгружается.

Не, это конечно. Если что-то берется из БД или из файла, то однозначно PHP. :)

Просто тут данные можно и не хранить в БД, всё достаточно просто. Разве что для вывода значений при загрузке страницы.

Link to comment
Share on other sites

  • 0

Если у меня хватило мозгов понять этот скрипт, то суть его - задача стартового времени(то есть можно поставить хоть 1800 год и как будто с того времени тикало). Затем проверка текущего времени и определения, сколько должно накрутить. Не совсем понятно, почему endValue (я так понимаю это конечный результат, который постоянно будет меняться) Мы получаем поделив на 1000. Это из-за SetInterval'a?

startDateMs = Date.parse(startDate); // Это типа приведению к типу даты?

Edited by Wasc
Link to comment
Share on other sites

  • 0
Просто тут данные можно и не хранить в БД, всё достаточно просто. Разве что для вывода значений при загрузке страницы.
Возьмём ситуацию когда каждую ночь парсится некоторая статистика и рассчитывается скорость роста показателя по сравнению с предыдущей ночью. Как же не хранить?
Link to comment
Share on other sites

  • 0

Если у меня хватило мозгов понять этот скрипт, то суть его - задача стартового времени(то есть можно поставить хоть 1800 год и как будто с того времени тикало). Затем проверка текущего времени и определения, сколько должно накрутить.

Не совсем понятно, почему endValue (я так понимаю это конечный результат, который постоянно будет меняться) Мы получаем поделив на 1000. Это из-за SetInterval'a?

startDateMs = Date.parse(startDate); // Это типа приведению к типу даты?

Да.

Вначале определяем стартовую дату и то значение, которое было на тот момент. Получаем текущую дату. Date.parse() - переводит обычный формат даты в количество миллисекунд прошедших с 1 января 1970г. Разность дат дает количество миллисекунд, прошедших между этими периодами. Поскольку у меня счетчик увеличивает значение один раз в секунду, то я делю на 1000, чтобы узнать сколько должно было натикать к настоящему моменту (endValue), ну и дальше это значение опять увеличивается setInterval'ом.

endValue - просто название переменное. Можешь его обозвать как-нибудь и по-другому :)

Возьмём ситуацию когда каждую ночь парсится некоторая статистика и рассчитывается скорость роста показателя по сравнению с предыдущей ночью. Как же не хранить?

Да я же не спорю :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy