webcoders.pt Posted May 16, 2017 at 01:46 PM Report #604327 Posted May 16, 2017 at 01:46 PM Saudações a todos. Iniciei recentemente a estudar de modo autodidata a linguagem javascript, logo peço já desculpas por um questão tão simples, mas como faço para transformar este script abaixo, que está na página http://webcoders.pt/w3estudos.php numa função no ficheiro externo. A tabela. <TABLE> <TBODY> <TR><TH>Debian</TH></TR> <TR><TD ID="Deb" align="center">0</TD></TR> <TR><TD><BUTTON TYPE="button" onclick='Debian()'>Sufragar Debian</BUTTON></TD></TR> </TBODY> </TABLE> O script <SCRIPT> <!-- var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); function Debian(){ document.getElementById('Deb').innerHTML=VotaDebian(); } </SCRIPT>
M6 Posted May 16, 2017 at 02:55 PM Report #604330 Posted May 16, 2017 at 02:55 PM Não sei se percebi bem a tua questão. queres colocar o script num ficheiro externo e inclui-lo no html? 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
webcoders.pt Posted May 16, 2017 at 09:32 PM Author Report #604350 Posted May 16, 2017 at 09:32 PM (edited) 6 hours ago, M6 said: Não sei se percebi bem a tua questão. queres colocar o script num ficheiro externo e inclui-lo no html? Sim, isto mesmo! Já tentei passar disto... <SCRIPT> var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); function Debian(){ document.getElementById('Deb').innerHTML=VotaDebian(); } </SCRIPT> ...para isto: function ContaDebian(){ var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); } function Debian(){ document.getElementById('Deb').innerHTML=ContaDebian(); } Mas qdo chamava a função Debian() o script não funcionava. Também tentei isto: function ContaDebian(){ var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); function Debian(){ document.getElementById('Deb').innerHTML=VotaDebian(); } } Mas também nada. Pode ajudar-me, sff? Cptos Edited May 16, 2017 at 09:37 PM by webcoders.pt
jacreis Posted May 16, 2017 at 09:48 PM Report #604351 Posted May 16, 2017 at 09:48 PM 1º coloca o JS num ficheiro. Vamos chamar de "app.js" 2º no html utiliza o tag script para importar o ficheiro <script src="app.js"></script> +info: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script ---
webcoders.pt Posted May 16, 2017 at 10:00 PM Author Report #604353 Posted May 16, 2017 at 10:00 PM 10 minutes ago, jacreis said: 1º coloca o JS num ficheiro. Vamos chamar de "app.js" 2º no html utiliza o tag script para importar o ficheiro <script src="app.js"></script> +info: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script Acabei de pôr no ficheiro externo.js o seguinte: function ContaDebian(){ var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); } function Debian(){ document.getElementById('Deb').innerHTML=ContaDebian(); } e no ficheiro html o seguinte: <SCRIPT> Debian(); </SCRIPT> O resultado foi que apareceu lá o seguinte: undefined Sabe o porquê?
jacreis Posted May 16, 2017 at 10:37 PM Report #604354 Posted May 16, 2017 at 10:37 PM Fácil o ContaDebian() não retorna nada, por isso o undefined. Pensa no seguinte: - Pq é que tens uma função( VotaDebian ) dentro de outra função ( ContaDebian )? - O que é que estas a contar? E deverias aprender a programar de forma + organizada. É especialmente importante no caso do JS, uma vez que podes facilmente ficar com uma amalgama. Há diferentes convenções vê: - https://google.github.io/styleguide/javascriptguide.xml - https://github.com/airbnb/javascript ---
webcoders.pt Posted May 17, 2017 at 11:28 AM Author Report #604370 Posted May 17, 2017 at 11:28 AM 12 horas atrás, jacreis disse: Fácil o ContaDebian() não retorna nada, por isso o undefined. - @jacreis, Disto eu já sabia. O que quero descobrir é como faço para passar isto... <SCRIPT> var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian += 1;} })(); function Debian(){ document.getElementById('Deb').innerHTML=VotaDebian(); } </SCRIPT> ...para um ficheiro externo??? Do jeito como está, dentro do ficheiro html, o script funciona como quero, mas não o quero dentro do mesmo ficheiro. Quero-o dentro de um ficheiro .js externo. Pensa no seguinte: - Pq é que tens uma função( VotaDebian ) dentro de outra função ( ContaDebian )? É uma questão de tentativa e erro. Nunca percorreste esta via? - O que é que estas a contar? - Os cliques. E deverias aprender a programar de forma + organizada. É especialmente importante no caso do JS, uma vez que podes facilmente ficar com uma amalgama. Há diferentes convenções - Isto vem com o tempo. Sê mais paciente com os iniciantes e se não tiveres paciência para com os tais, é melhor ajudares apenas os avançados 😉 Mto obg pela crítica e cptos.
jacreis Posted May 17, 2017 at 12:13 PM Report #604371 Posted May 17, 2017 at 12:13 PM As perguntas que te fiz eram de retórica. E tinham o intuito de ires olhar, com olhos de ver, para o teu código. Estão lá as repostas. Citação - Pq é que tens uma função( VotaDebian ) dentro de outra função ( ContaDebian )? É uma questão de tentativa e erro. Nunca percorreste esta via? Claro, "you got to learn to crawl before you learn to walk". Mas tb deves aprender a reflectir no que fazes... isto deve contar com 80% do trabalho do programador. Citação E deverias aprender a programar de forma + organizada. É especialmente importante no caso do JS, uma vez que podes facilmente ficar com uma amalgama. Há diferentes convenções - Isto vem com o tempo. Sê mais paciente com os iniciantes e se não tiveres paciência para com os tais, é melhor ajudares apenas os avançados Aprenderes cedo a fazer as coisas bem vai poupar muitos dissabores, especialmente qd começares a fazer o debug. Podes pensar que não, mas estou a tentar ajudar-te. E por falar em debug, já conheces a developers tool? se n conheces deverias (chrome : view > developers tool ) ela dá muita informação do que estás a fazer mal. PS: só para que saibas tenho o ficheiro js feito desde ontem e tem apenas 4 linhas e 1 função... agora vou ter uma reunião, da parte da tarde se ainda tiveres duvidas, diz que eu mando-te a solução para o teu problema. ---
jacreis Posted May 17, 2017 at 12:24 PM Report #604372 Posted May 17, 2017 at 12:24 PM As perguntas que te fiz eram de retórica. E tinham o intuito de ires olhar, com olhos de ver, para o teu código. Estão lá as repostas. Citação - Pq é que tens uma função( VotaDebian ) dentro de outra função ( ContaDebian )? É uma questão de tentativa e erro. Nunca percorreste esta via? Claro, "you got to learn to crawl before you learn to walk". Mas tb deves aprender a reflectir no que fazes... isto deve contar com 80% do trabalho do programador. Citação E deverias aprender a programar de forma + organizada. É especialmente importante no caso do JS, uma vez que podes facilmente ficar com uma amalgama. Há diferentes convenções - Isto vem com o tempo. Sê mais paciente com os iniciantes e se não tiveres paciência para com os tais, é melhor ajudares apenas os avançados Aprenderes cedo a fazer as coisas bem vai poupar muitos dissabores, especialmente qd começares a fazer o debug. Podes pensar que não, mas estou a tentar ajudar-te. E por falar em debug, já conheces a developers tool? se n conheces deverias (chrome : view > developers tool ) ela dá muita informação do que estás a fazer mal. PS: só para que saibas tenho o ficheiro js feito desde ontem e tem apenas 4 linhas e 1 função... agora vou ter uma reunião, da parte da tarde se ainda tiveres duvidas, diz que eu mando-te a solução para o teu problema. ---
webcoders.pt Posted May 17, 2017 at 01:23 PM Author Report #604374 Posted May 17, 2017 at 01:23 PM 51 minutos atrás, jacreis disse: E por falar em debug, já conheces a developers tool? se n conheces deverias (chrome : view > developers tool ) ela dá muita informação do que estás a fazer mal. Vou ver se consigo instalar o Chrome no Fedora, penso que há um ficheiro rpm no site do Google. PS: só para que saibas tenho o ficheiro js feito desde ontem e tem apenas 4 linhas e 1 função... agora vou ter uma reunião, da parte da tarde se ainda tiveres duvidas, diz que eu mando-te a solução para o teu problema. À tarde eu não posso, pois sou copeiro e horário de restaurante é ingrato, mas se quiseres enviar-mo via email, ei-lo aqui: adonai.adoneinu@gmail.com Se for por outra via, diga-me qual. Mais uma vez obg e cptos
jacreis Posted May 17, 2017 at 02:20 PM Report #604376 Posted May 17, 2017 at 02:20 PM Podes utilizar o FF... se até o IE já têm. Tenta fazer 1º... se n conseguires diz, que eu ponho aqui uma das soluções possiveis. 🙂 ---
jacreis Posted May 18, 2017 at 08:40 AM Report #604386 Posted May 18, 2017 at 08:40 AM Como prometido, aqui vai...https://jsfiddle.net/sxzndtqy/ ---
webcoders.pt Posted May 18, 2017 at 01:09 PM Author Report #604401 Posted May 18, 2017 at 01:09 PM 4 horas atrás, jacreis disse: Como prometido, aqui vai...https://jsfiddle.net/sxzndtqy/ @jacreis, obrigado pela ajuda, mas não consegui seguindo o teu código, porém, devo dizer-te que através dele percebi uma coisa mto simples, que bastava que eu copiasse o script sem as tags script para o ficheiro .js externo e chamá-lo no ficheiro html. Deixe-me ser mais claro. Eu pensava que só podiam haver funções dentro do ficheiro .js externo, logo eu não sabia como pôr esta parte... var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian+=1;} })(); ...dentro do ficheiro externo. Pensava que havia de pô-lo dentro de uma função, por isso estava a tentar pô-lo dentro de uma como bem viste. Ficou assim: var VotaDebian = (function(){ var ContaDebian = 0; return function(){return ContaDebian++;} })(); function Debian(){document.getElementById('Deb').innerHTML=VotaDebian();} Mas deu um errito. Não começava com o valor zero, mas com o 1. Então troquei oreturn function(){return ContaDebian+=1;} por return function(){return ContaDebian++;} e o código passou a correr à perfeição. Pode não ser o mais curto, mas funciona. Novamente obg e cptos.
HappyHippyHippo Posted May 18, 2017 at 01:36 PM Report #604403 Posted May 18, 2017 at 01:36 PM variveis globais é algo que me faz cocigas document.getElementsByTagName('BUTTON')[0].onclick = function(){ this.setAttribute('data-count', val = (parseInt(this.getAttribute('data-count')) || 0) + 1); document.getElementById('Deb').innerHTML = val; }; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jacreis Posted May 18, 2017 at 06:11 PM Report #604420 Posted May 18, 2017 at 06:11 PM @webcoders.pt 🙂 há muitas formas de fazer o mesmo em JS, umas melhores outras piores. Vê como o @HappyHippyHippo demonstra outra forma de guardar a info. ---
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now