|
|
|
| Мне нужно написать такой сценарий,чтоб после загрузки страницы выводилась переменная
qwe со значением 30, и чтоб каждые 2.5 секунды значению qwe прибавлялся 1 и выводилось на экран,
Вот мой сценарий:
<script language="JavaScript">
var qwe;
qwe=30;
function showtime() {
qwe++;
}
setTimeout(showtime, 2500);
document.writeln(qwe);
</script>
|
Он почемуто неработает,объясните где ошибка? | |
|
|
|
|
|
|
|
для: vania
(24.03.2007 в 19:40)
| | Во-первых, вместо setTimeout нужно вставить setInterval ... | |
|
|
|
|
|
|
|
для: vania
(24.03.2007 в 19:40)
| | 1. метод write в программе можно использовать один раз. Вторичное использование этого метода переписывает сам объект document - вместе со всеми функциями, в изначальном документе прописанными.
2. логика в вашем примере нарушена полностью.
Надо приблизительно так:
<head>
<script language="JavaScript">
function showtime () {
document.getElementById ('timer1').value++;
setTimeout (showtime, 2500);
}
onload = showtime;
</script>
</head>
<body>
<input id="timer1" style="border: none" value="29">
</body>
|
| |
|
|
|
|
|
|
|
для: CNT
(24.03.2007 в 20:24)
| | CNT, помоги написать такой скрипт,чтоб длинна таблицы с 30 каждые 2.5 секунды увеличивалась на 1,а то у мну чёто не получается | |
|
|
|
|
|
|
|
для: vania
(24.03.2007 в 23:56)
| | "длинна таблицы" - не знаю такого.
М.б., - "ширина таблицы"? Или же "высота таблицы"?
Или "ширина какой-то из ячеек таблицы"?
Или же "высота какой-то из ячеек таблицы"?
...
Как угадать-то? | |
|
|
|
|
|
|
|
для: CNT
(25.03.2007 в 14:57)
| | Пусть будет ширина таблицы. Таблица состоит из одной ячейки | |
|
|
|
|
|
|
|
для: vania
(25.03.2007 в 22:19)
| | В коде, который выше, заменяете
document.getElementById ('timer1').value++;
на document.getElementById ('timer1').width++;
и <input id="timer1" style="border: none" value="29">
на <table id="timer1" border="1" width="345"><tr><th>Таблица</th></tr></table> | |
|
|
|
|
|
|
|
для: CNT
(25.03.2007 в 23:41)
| |
<head>
<script>
function showtime () { ;
document.getElementById ('timer2').style.width
=(document.getElementById('timer1').value++)+'px';
}
onload = function(){showtime;setInterval(showtime, 2500);}
</script>
</head>
<body>
<input id="timer1" style="border: none" value="29"><br>
<table id="timer2" border="1" cellpadding=0 style="width:29px"><tr><th>.</th></tr></table>
</body>
|
| |
|
|
|
|
|
|
|
для: 12345
(26.03.2007 в 12:29)
| | ошибочка есть.
Обращение к функции без скобок вот здесь (выделено)
onload = function(){showtime;setInterval(showtime, 2500);}
| будет парсером проигнорировано.
Можете это проверить так:<script>
var A = 0, B;
function showtime () {
if (!A) {window.status = B; A = 1}
document.getElementById ('timer2').style.width
=(document.getElementById('timer1').value++)+'px';
}
onload = function(){showtime; B = setInterval(showtime, 2500);}
</script>
| В статусе при первом обращении к функции showtime переменная B уже будет определена - из чего следует, что первый вызов showtime не произошёл. А если пропишете скобки, то в статусе увидите undefined | |
|
|
|
|
|
|
|
для: CNT
(24.03.2007 в 20:24)
| | setTimeout (showtime, 2000); <<< я такого не знаю, я вот знаю такое
setTimeout ('showtime()', 2000); | |
|
|
|
|
|
|
|
для: bronenos
(25.03.2007 в 23:21)
| | Теперь знать будете:-) | |
|
|
|
|
|
|
|
для: CNT
(25.03.2007 в 23:35)
| | А можно усложнить сценарий таким образом,чтоб доходя до определенной величины (например 400), наращивание переменной останавливалось? | |
|
|
|
|
|
|
|
для: vania
(28.03.2007 в 02:50)
| | if (i<400) i++; | |
|
|
|
|
|
|
|
для: vania
(28.03.2007 в 02:50)
| | Надо строку document.getElementById ('timer1').width++ заменить на
with (document.getElementById ('timer1')) if (width < 400) width++; else return; | |
|
|
|
|
|
|
|
для: CNT
(28.03.2007 в 10:51)
| | Почему нельзя сделать,чтобы эти 2 скрипта работали одновременно?
<script language="JavaScript">
function showtime () {
document.getElementById ('timer1').value++;
setTimeout (showtime, 1000);
}
onload = showtime;
</script>
<script language="JavaScript">
function showtable () {
document.getElementById ('timer2').width++;
setTimeout (showtable, 2000);
}
onload = showtable;
</script>
<input id="timer1" style="border: none" value="29">
<table id="timer2" border="1" width="345"><tr><th>Таблица</th></tr></table>
|
| |
|
|
|
|
|
|
|
для: vania
(29.03.2007 в 02:49)
| | Попробуйте: onload=function(){showtime();showtable()} | |
|
|
|
|
|
|
|
для: RMW
(29.03.2007 в 03:37)
| | Можно так, как предложил RMW, а можно и объединить функции в одну:
<script language="JavaScript">
var R = 1;
function showtime ()
{
with (document)
{
getElementById ('timer1').value++;
if (R < 0) getElementById ('timer2').width++;
}
R *= -1; setTimeout (showtime, 1000);
}
onload = showtime;
</script>
|
| |
|
|
|
|
|
|
|
для: CNT
(29.03.2007 в 10:17)
| | что значит with?
судя по контексту это некий аналог
using namespace в С? | |
|
|
|
|
|
|
|
для: bronenos
(29.03.2007 в 10:46)
| | Нет, это не перевод имен в глобальное пространство.
Это просто форма записи, уменьшающая количество байт в коде - для С такая проблема не стоит, там код может быть какой угодно длины, потому как файлы С компилируются. А в JavaScript каждый лишний символ в коде увеличивает время загрузки и время отработки.
With - это Statement, устанавливающий "объект по умолчанию" для последующего (помещённого в фигурные скобки) блока операторов.
Например, следующую конструкцию:
document.getElementById ('best_of_the_bests').innerHTML = '<b>YES</b>';
document.getElementById ('best_of_the_bests').bgColor = '#556677';
document.getElementById ('best_of_the_bests').className = 'myClass';
document.getElementById ('best_of_the_bests').style.border = '1px red solid';
|
можно записать короче (используя меньше символов), с помощью with:
with (document.getElementById ('best_of_the_bests'))
{
innerHTML = '<b>YES</b>';
bgColor = '#556677';
className = 'myClass';
style.border = '1px red solid';
}
|
| |
|
|
|
|
|
|
|
для: CNT
(29.03.2007 в 10:58)
| | Мне надо,чтобы скрипты работали, каждый со своим интервалом "увеличения" | |
|
|
|
|
|
|
|
для: vania
(29.03.2007 в 16:28)
| | Они и так работают с разными интервалами - точно так, как и задано в условиях: число увеличивается в два раза быстрее, чем увеличивается ширина таблицы. Неужели, блин, не заметно?
Или же опять - "я не смотрел, но хочу сказать"? | |
|
|
|