Необходимо исправить функцию печатной машинки
Если не туда создал тему, пусть модеры перебросят.
------------------------------------------------------ Вот html вместе с функцией печатной машинки <html> <head> <title>Печатная машинка</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <style type="text/css"> <!-- .style1 {font-size: 12px} --> </style> <script> <!-- web-mastery.info --> var source,dest,len,now=0,delay=100,letters=1; function show_text() { source = document.getElementById("1"); dest = document.getElementById("pageText"); len = source.innerHTML.length; show(); } function show() { dest.innerHTML += source.innerHTML.substr(now,letters); now+=letters; if(now<len) setTimeout("show()",delay); } </script> </head> <body bgcolor="#FAFDFF" onload="show_text();"> <p id="1">Текст печатной машинки </p> <p id="2">Текст печатной машинки </p> <p id="3">Текст печатной машинки </p> ... <p id="31">Текст печатной машинки </p> <p id="pageText"> </p> </body> </html> в данной функции текст выводиться абзац только с id=1 и только один раз, а у меня их (<p>) 31 штука. И каждый раз это число меняется. Мне необходимо организовать цикл печатной машинки так что бы число <p> бралось их php переменной как я описал ниже for (var k = 0; k <<?php echo $i ?>; k++) { а текст печатной машинки выводился циклом, сначала id=0, потом id=1 и т.д. в зависимости от счётчика "k" source = document.getElementById("k"); - сдесь id элемента в цикле в общем в мною предложенную функцию нужно добавить цикл, но так что бы следующий элемент выводился, только когда вывелся предыдущий. друг за другом. id=0, id=1, ... id=k Спасибо за помощь! |
seoinby,
<html> <head> <title>Печатная машинка</title> <meta charset="utf-8" /> <style type="text/css"> <!-- .style1 {font-size: 12px} --> </style> <script> <!-- web-mastery.info --> var source,dest,len,now=0,delay=100,letters=1,k = 1; function show_text() { source = document.getElementById(k); dest = document.getElementById("pageText"); len = source.innerHTML.length; show(); } function show() { dest.innerHTML += source.innerHTML.substr(now,letters); now+=letters; if(now<len) {setTimeout("show()",delay)} else {k++ ;now=0; if (k < 5) show_text(); } } </script> </head> <body bgcolor="#FAFDFF" onload="show_text();"> <p id="1">Текст печатной машинки 1</p> <p id="2">Текст печатной машинки 2</p> <p id="3">Текст печатной машинки 3</p> <p id="4">Текст печатной машинки 4</p> <p id="pageText"> </p> </body> </html> |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Итог - ИД может быть вообще цифровым. |
Итога быть не может. Все зависит от задачи.
try { document.querySelector('#1'); } catch(e) { alert(e.message); } |
Цитата:
|
Цитата:
|
Цитата:
|
Что-то мне кажется что для css-селектора эту цифру нужно эскейпить как-то. Но не могу найти информацию. ksa, а не подкинешь ссылку на ту самую тему?
|
Цитата:
Я просто для себя запомнил то обсуждение и все. Там и на концорциум какой-то ссылку давали, де не противоречит правилам... |
а если так)
модифицировал свою старую анимацию, printIn - печать , printOut -удаление. <!DOCTYPE HTML> <html> <head> </head> <body> <div id="t"><p>asdsadasdsa</p> asdsadsadsad<div>asdasdas1</div></div> <script> var Text = { printIn:function (elem,str,duration,callback){ var i = 0, string = "", self = this; (function start(){ if(i > str.length-1 ) { if(callback)callback(); return; } var tag = self.Tags(str,i); if(tag == null) string += str[i]; else { string+= tag.tag; i = tag.position; } elem.innerHTML = string; i++; setTimeout(arguments.callee,duration); }()); }, printOut:function (elem,str,duration, callback){ var i = str.length, string="", self = this; (function(){ if(i < 0 ){ if(callback)callback(); return; } var tag = self.Tags(str,i); if(tag != null) i = tag.position; elem.innerHTML = str.slice(0,i); i--; setTimeout(arguments.callee,duration); }()); }, Tags: function(text, num){ var symb = text[num]; var start, end, val = {}, open, close; if(symb == '<'){ open = text.indexOf("<",num); start = num; end = text.indexOf(">",num); if(open < start) return null; val.tag = text.slice(start, end+1); val.position = end; } else if(symb == '>'){ close = text.lastIndexOf(">",num); end = text.lastIndexOf("<",num); if(end > close ) return null; val.position = end; } else return null; return val; } }; var el = document.getElementById("t"); Text.printIn(el, el.innerHTML,50,callback); function callback(){ Text.printOut(el, el.innerHTML,50); } </script> </body> </html> |
Часовой пояс GMT +3, время: 09:14. |