Oi Vanessa,
O grande problema é que você misturou o código, e perdeu o escopo das funções, além de adicionar caracteres a mais no código.
Vamos por partes. A primeira coisa que você deve saber, é que seu navegador é preparado para te ajudar a solucionar problemas de programação, para isso, existe o Developer Tools e extensões para navegador que te ajudam no processo de debugging.
Eu estou usando o navegador Opera para estes exemplos, mas qualquer outro navegador segue os mesmos principios.
A primeira coisa a se fazer é abrir o console para verificar se existem erros.
Faça isso clicando com o botão direito na tela e "Inspect Element" ou "Inspecionar Elemento"
Procure pela aba escrita "Console" e clique nela. Logo de cara encontramos o seguinte erro.
Uncaught SyntaxError: Unexpected token )
Essa mensagem nos diz que existe um )
e mais no código. Dando uma procurada no código achei o seguinte trecho
mostra("Flavio tem " + (ano-1977) + "anos");)
Veja que no final existe um )
a mais que não deveria estar ali.
Remova o )
sobrando, salve e teste novamente.
Vamos nos deparar com um novo erro, que é o seguinte
Uncaught ReferenceError: mostra is not defined
Isso nos diz que a função mostra
que você está tentando usar não está definida, ou seja não foi definido em lugar nenhum que ela está pronta para uso e o que ela faz.
Porém, olhando no seu código encontramos a função mostra
sendo definida logo dentro da função pulaLinha
.
E é ai que está o problema. No Javascript temos escopo de código que é definido pelos colchetes. Ou seja
function init() {
var variavelDefinidaDentroDeInit = true;
if ( variavelDefinidaDentroDeInit ) {
alert('estamos no escopo de init');
}
else {
alert('não estamos no escopo de init');
}
}
if ( variavelDefinidaDentroDeInit ) {
alert('estamos no escopo de init');
}
else {
alert('não estamos no escopo de init');
}
Neste caso a variavelDefinidaDentroDeInit
só vai funcionar dentro da função init
, e é a mesma coisa que aconteceu no seu código.
Para resolver, basta mover a função para o escopo certo, que deveria ser no mesmo nível da sua função pulaLinha
function funcao1() {}
function funcao2() {
function funcao3() {}
}
// consiguimos usar as duas funções pois ambas estão disponíveis no escopo
funcao1();
funcao2();
// não temos acesso na funcao3 pois ela está no escopo dentro da funcao2
funcao3();
Ficando assim o seu código
<meta charset="UTF-8">
<script>
function pulaLinha() {
document.write("<br>");
document.write("<br>");
}
function mostra() {
document.write("ola");
}
var ano = 2016;
//document.write("Flavio tem " + (ano-1977) + "anos");
mostra("Flavio tem " + (ano-1977) + "anos");
pulaLinha();
//document.write("Joaquim tem "+ (ano-1996) + "anos");
mostra("Joaquim tem "+ (ano-1996) + "anos");
pulaLinha();
ano = 2017;
//document.write("Barney tem " + (ano-1976) + "anos");
mostra("Barney tem " + (ano-1976) + "anos");
//document.write("ola pessoal!");
mostra("ola pessoal!");
</script>
Att.