Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou enfrentando um problema e não estou conseguindo resolver.
No meu site uso o Doctype Transitional:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
O único problema é que quando há qualquer especificação de doctype, seja Strict ou Transitional alguns javascripts não funcionam corretamente, ou simplesmente não funcionam.
Agora, se eu apagar o Doctype daí os scripts funcionam. Se deixo, não funciona!
Mas como é essencial o uso do Doctype, não sei o que fazer.
Um exemplo do javascript que não está funcionando:
<script language="JavaScript" type="text/javascript"><!--
var news = new Array(
[ "titulo1" , "[http://www.site.com/"],](http://www.site.com/)
[ "titulo2" , "[http://www.site.com/"],](http://www.site.com/)
[]
);
var ticker_layer = false;
var step_time = 25;
var freeze_time = 2000;
var news_index = 0;
var title_index = 0;
var end_title = "_";
function begin_roll_ticker(){
window.setTimeout( "roll_ticker()" , step_time );
}
function roll_ticker(){
var title;
if ( news.length > news_index + 1 && news[news_index][0].length >= title_index ){
title = news[ news_index ];
document.all('ticker_anchor').href = title[1];
document.all('ticker').innerHTML = title[0].substring( 0 , title_index );
if ( title[0].length > title_index ) document.all('ticker').innerHTML += end_title;
title_index++;
window.setTimeout( "roll_ticker()" , step_time );
}
else{
news.length == news_index + 2 ? news_index = 0 : news_index++;
title_index = 0;
window.setTimeout( "roll_ticker()" , freeze_time );
}
}
window.onload = begin_roll_ticker;
//--></script>
E para exibir o script usa-se:
<a href="#" target="_top" name="ticker_anchor">
<div id="ticker"></div>
</a>
Alguém poderia me ajudar?Nada, já tentei usar esse. Ai :( não sei o q faço.
Esse problema é tão inédito? :P. Ninguém passou por isso?
Se eu não tivesse tentado tudo, não estaria aqui tomando espaço e tempo na comunidade.
Qualquer informação é bem-vinda ;)
olha cara eu aconselho mudar o script, tirar esse document.all que não eh padrão...pega por id com o document.getElementById...acho que pode resolver...
Puxa, verdade! Dei uma procurada e vi que o elemnto document.all não é reconhecido pela w3c.
Então tentei fazer com document.getElementById, mas não funcionou, nem tirando o doctype.
Olha só como fiz:
<script language="JavaScript" type="text/javascript"><!--
var news = new Array(
[ "titulo1" , "[http://www.site.com/"],](http://www.site.com/)
[ "titulo2" , "[http://www.site.com/"],](http://www.site.com/)
[]
);
var ticker_layer = false;
var step_time = 25;
var freeze_time = 2000;
var news_index = 0;
var title_index = 0;
var end_title = "_";
function begin_roll_ticker(){
window.setTimeout( "roll_ticker()" , step_time );
}
function roll_ticker(){
var title;
if ( news.length > news_index + 1 && news[news_index][0].length >= title_index ){
title = news[ news_index ];
document.getElementById("ticker_anchor").href = title[1];
document.getElementById("ticker").innerHTML = title[0].substring( 0 , title_index );
if ( title[0].length > title_index ) document.getElementById("ticker").innerHTML += end_title;
title_index++;
window.setTimeout( "roll_ticker()" , step_time );
}
else{
news.length == news_index + 2 ? news_index = 0 : news_index++;
title_index = 0;
window.setTimeout( "roll_ticker()" , freeze_time );
}
}
window.onload = begin_roll_ticker;
//--></script>
Só troquei document.all por document.getElementById, tem algum parâmetro sendo usado que antes só aceitava no document.all? E que agora não funciona com document.getElementById?nuss, document.all, fazia tempo q eu nao via isso XD
cara, eu ja tive esse problema tb, o meu era pra mexer o scroll, n pegava com doctype... realmente tem umas diferencas, pode parecer meio drastico, mas use doctype e refaca todo o script =P
Também me toquei que:
<a href="#" target="_top" name="ticker_anchor">
<div id="ticker"></div>
</a>A tag <a> não é por id é por name, então troquei lá só na "ticker_anchor" de document.getElementById por document.getElementByName. Mesmo assim não funcionou.Nossa valeu Otata e Wilker. Era mesmo, a W3C não aceita o document.all.
O problema que estava dando era que tinha o parâmetro name="ticker_anchor". Daí troquei para id="ticker_anchor".
Funcionou beleza. Esse código é antigo mesmo.
Jah tive alguns problemas com isso tbm eh fogo meu...tenta usar esse aqui
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
to usando aqui e tudo funciona espero que ajude..