Необходимо исправить функцию печатной машинки
Если не туда создал тему, пусть модеры перебросят.
------------------------------------------------------ Вот 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, время: 15:01. |