Ir para conteúdo
Fórum Script Brasil

vini_loock

Membros
  • Total de itens

    1.037
  • Registro em

  • Última visita

Tudo que vini_loock postou

  1. Faz assim... Usa em todas as lis um background com a seta assim: -> Ai cria uma regra para as lis com a classe active, nessa regra você muda o background e coloca a outra seta. No javaascript, ao clicar em uma li, você verifica se esse li tem a classe 'active', se tiver, você retira e se não tiver você adiciona
  2. Porque "resultado.value"? não seria apenas "resultado"? Eu nunca fiz uma requisição com jquery, mas é bastante óbvio que não seja assim.
  3. Então no caso, só a primeira substituição já serviria: value = value.replace(/\D/g, '') Ou ainda:value = value.replace(/[^0-9]/g, '')Essas duas, não fazem nada alem de substituir tudo que não for um número por nada
  4. É só usar um pouco de expressão regular: Supondo que o formato a ser enviado para o servidor seja: R$ 30.000,00 Seria possível fazer assim: value = value.replace(/\D/g, '').replace(/([0-9]{0, })([0-9]{3})([0-9]{2})$/g, "R$ $1.$2,$3")Testa com essa ai, caso não de, da uma pesquisada, existe muito material sobre isso. Também tem uns plugins jquery que fazem isso enquanto o usuário digita no campo, como o mask
  5. Só uma ex-possível solução... Tentei assim: $(document.getElementsByTagName('div')[0]).animate({width: 500}, 1000); $(document.getElementsByTagName('div')[1]).animate({width: 500}, 1000); E foi normal, os dois tiveram o efeito ao mesmo tempo, então pensei que fosse problema no método each, mas não é, pois eu substitui o método animate por isso:Nojim.prototype.animate = function(){ this.each(function(n){ alert(n); }); } E voltei ao exemplo anterior:$('div.site').animate({width: 500}, 1000);Ele exibiu 2 alerts, primeiro 0 e depois 1, como esperado.
  6. Eu não cheguei a testar isso que você propos porque to sem um servidor instalado aqui, porem, fiz se não me engano sexta-feira uma requisição mais simples, tudo em um método mesmo, funciona normal por enquanto, não cheguei a fazer testes, apenas o básico. Nojim.prototype.ajax = function(param, value){ // váriaves privadas this.url = ''; this.method = 'GET'; this.params = null; this.header = {'Content-type': 'application/x-www-form-urlencoded', charset: 'UTF-8'}; try{ var obj = new XMLHttpRequest(); }catch(e){ try{ var obj = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ee){ try{ var obj = new ActiveXObject("Microsoft.XMLHTTP"); } catch(E){alert("O navegador não suporta Ajax")} } } var _this = this; // Eventos this.success = ''; this.error = ''; if(typeof param != 'string'){ // se params for um array for(i in param){ this[i] = param[i] } }else{ this[param] = value; } obj.open(this.method, this.url, true); for(i in this.header){ obj.setRequestHeader(i, this.header[i]); } obj.onreadystatechange = function(){ switch(obj.readyState){ case 4: _this.success.call(obj); break; } } obj.send(this.params); }Quando tiver a oportunidade(amanhã), testarei esse código acima com a sua sugestão para ver o que retorna. Vlw!
  7. Olá pessoal, como já postei aqui, estou fazendo um framework para aprender um pouco mais sobre js. Estou desenvolvendo agora o método animate, que funcionará como o método da jQuery (jQuery,animate()). Ele até está funcionando, mas é aplicado a apenas um elemento, e não a todos os já selecionados. O código de exemplo: <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <title></title> &lt;script type="text/javascript" src="nojim.js"></script> &lt;script type="text/javascript"> $(document).ready(function(){ $('div.site').animate({width: 500}, 1000); }); </script> <style type="text/css"> .site{background: blue; display: inline; float: left; width: 100px; height: 100px;} #site{background: red;} </style> </head> <body> <div id="site" class="site">fsdf</div> <div class="site">fsdf</div> </body> </html> O método animate:Nojim.prototype.animate = function(prop, _speed, _cb){ speed = is_int(_speed) ? _speed : 2000; this.each(function(){ var props = []; for(i in prop){ props.push({ prop: i, now: parseInt($(this).css(i)), end: prop[i], each: ((parseInt($(this).css(i))-prop[i])/(speed/10))*-1, cond: (parseInt($(this).css(i)) > prop[i] ? 1 : 2) }); } var ends = 0; var el = this; var m_each = 99999; var i_each; for(i = 0; i < props.length; i++){ if(props[i].each < m_each){ m_each = props[i].each; i_each = i; } } __interval = setInterval(function(){ if(ends == props.length){ clearInterval(__interval[num]); }else{ for(i = 0; i < props.length; i++){ if((props[i].cond == 1 && props[i].end >= props[i].now) || (props[i].cond == 2 && props[i].now >= props[i].end)){ ends++; }else{ props[i].now += props[i].each; $(el).css(props[i].prop, props[i].now+'px'); } } } }, (props[i_each].each-props[i_each].end)/(speed/10)*-1); }); } E os métodos necessários para fazer funcionar esse exemplo:function is_array(str){ return typeof str == 'object' && str.length != undefined } function Nojim(els){ this.elements = []; if(is_string(els)) this.elements = document.querySelectorAll(els); else this.elements = els; return this; } Nojim.prototype.each = function(fn){ if(is_array(this.elements)){ for(i = 0; i < this.elements.length; i++){ fn.call(this.elements[i], i); } }else{ fn.call(this.elements); } return this; } Nojim.prototype.css = function(css, val){ if(is_string(css)){ if(val !== undefined){ this.each(function(){ this.style[css] = val; }); }else{ var el = is_array(this.elements) ? this.elements[0] : this.elements; if(el.currentStyle) return el.currentStyle[css]; else if(window.getComputedStyle) return document.defaultView.getComputedStyle(el, null).getPropertyValue(css); } }else{ for(var i in css){ this.each(function(){ this.style[i] = css[i]; }); } } return this; } function $(e){ return new Nojim(e == undefined ? window : e) }Esse exemplo deveria(no Chrome) fazer o primeiro elemento(vermelho) aumentar seu width de 100px para 500px, se isso não acontecer, me avise, pode ser que eu não tenha incluido alguma função aqui no post. Eu não faço a minima ideia onde esteja o problema, pois ele executa a animação no primeiro numa boa, só "esquece" de fazer o mesmo no segundo elemento div.site
  8. Provavelmente é no PHP.ini, mas se você não tiver acesso a este arquivo, da pra alterar assim: ini_set('meemory_limit', '16M'); ini_set('post_max_size', '16M'); ini_set('upload_max_filesize', '16M');
  9. Não vi muita lógica aqui: string_json =innerHTML=objXMLHTTP.responseText; person_list = eval(string_json); Tenta assim:string_json = objXMLHTTP.response; person_list = eval(string_json);
  10. Tenta no lugar de: var objXMLHTTP = createXMLHTTP(); Isso:var objXMLHTTP = new XMLHttpRequest();Acho que esse comando só não vai funcionar no IE, não tenho certeza. E outra coisa que reparei, agora no ASP, não sei nada sobre essa linguagem, posso estar falando besteira, mas o correto não seria antes de você abrir a tag <%, colocar um [{ e ao fecha-la colocar: }]
  11. da pra fazer no próprio HTML: <meta http-equiv="refresh" content="http://google.com/; 5" />é+/- isso, da uma pesquisada em "refresh html"
  12. Hm... eu não consigo achar nada relacionado,acredito que esteja procurando os termos errados, mas se formos montar uma tree com os ojetos javascript ficaria algo como: document getElementById getElementsByTagName style display background color (...) id value className (...) String toLowerCase toUpperCase (...) (...) Certo? Então o correto ao invés de estender o getElementById, seria estender o document. Ficando algo como(?):document.prototype.addClass = function(c){ this.className += c; return this; }
  13. Então, eu estava criando uma classe para manipular o DOM, mas como não havia conseguido estender o getElementsById(), fiz +/- como nesses frameworks (jquery,motools, etc). Vlw pela ajuda
  14. Sim, mas isso não funciona em todos os navegadores, esse querySelector faz parte do HTML5, então não é viável em todos os casos, o mais aconselhavel seria escrever uma função como esse querySelector.
  15. Olá, estou tendo um problema com requisições ajax, está difícil encontrar o erro, já tentei olhando no debug do chrome e no firebug, mas não retorna erro algum. Era pra me exibir dois alerts,: alert 1: "state: 1" alert 2: "state: 4" Mas só mostra o primeiro. A função Ajax: function Ajax(opt, val){ this.url = ''; this.method = 'GET'; this.params = ''; this.req = null; if(typeof opt == 'object'){ for(i in opt){ this[i] = opt[i]; } }else{ this[opt] = val; } this.url = this.url == 'GET' && this.params != '' ? this.url+'?'+this.params : this.url; this.req = new XMLHttpRequest(); this.req.open(this.method, this.url, true); this.req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); this.req.setRequestHeader('charset', 'UTF-8'); this.onreadystatechange = this.state(); this.req.send(this.params); } Ajax.prototype.state = function(){ if(this.req.readyState == 1){ alert('state: 1'); }else if(this.req.readyState == 4){ alert('state: 4'); } } E o arquivo que chama:<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <title></title> &lt;script type="text/javascript" src="js/Ajax.class.js"></script> &lt;script type="text/javascript"> window.onload = function(){ var a = new Ajax({ method: 'POST', url : 'ajax.request.php', params: 'option=component' }); } </script> </head> <body></body> </html>Já dei uma olhada em várias classes para tentar identificar meu erro, mas nenhuma que achei até agora trabalha dessa mesma forma, então fica um pouco difícil. Provavelmente é um erro tolo, mas não consigo achar de forma alguma. Se alguém puder dar esse help, ficarei muito feliz xD Vlw...
  16. Faz um foreach para todos os selects verificando o valor deles, ai retorna os que baterem
  17. Olá. Sempre gostei muito de trabalhar no bakend, mas nesses ultimos meses, fui "obrigado" a trabalhar tanto no front quanto no back. Não conhecia muito do javascript, mas quando me aprofundei no assunto, me apaixonei. Estou começando a estudar HTML5, que na verdade não passa de javascript², mas não consigo achar nenhum fórum específico, ou algum fórum com uma quantidade de usuários interessados em HTML, CSS ou Javascript, especialmente nas novas versões. Venho pedir a alguém que conheça algum fórum assim que me passe um link. Ou ainda, propor de juntar um pessoal e criar um fórum específico, não sai nenhum pouco caro, acredito que não seja uma má ideia. Bom,é isso, vou continuar na procura, se conseguir algum link eu posto aqui, mas se alguém topar de fazer um fórum, da um grito ai pra conversarmos melhor. Vlw pessoal, e bom fim de ano para todos!
  18. Já tentou isso? document.body.onclick = function(){ //your code here?? }
  19. Descobri que está correto, são apenas algumas propriedades que não retornam nada, qual o motivo disso?
  20. Só você adicionar uma div e esconde-la pelo css, ai na função fecha_banner(), você pega ela pelo id e mostra ela, simples assim
  21. Olá, estou desenvolvendo um framework para por em prática o que eu venho estudando sobre JS OO. Está tudo normal, exceto a parte que deveria pegar o estilo de algum elemento. Está retornando "null". Eu dei uma boa garimpada e tentei de todas as formas que eu achei, porem nenhuma funcionou, então voltei à versão que eu fiz inicialmente para postar aqui(é a que eu mais achei que fosse dar certo). A linha é essa: return document.defaultView.getComputedStyle(el, null).getPropertyValue(css) a variável el é basicamente isso:var el = document.getElementById('id_da_div'); e a váriavel css é uma string contendo a palavra "backgroundColor". Seguindo pela lógia, ele deveria me retornar "blue" que é a cor que eu defini no css, porém, está me retornando "null". Esse probleminha ta bem chato, se alguém puder me ajudar, serei muito grato. Ah.. e claro não é?, caso alguém queira copiar o inicio do meu framework, ai está:/* Verifica se o dado passado em str é uma string */ function is_string(str){ return typeof str == 'string' } /* Verifica se o dado passado em str é um array */ function is_array(str){ return typeof str == 'object' && (str instanceof Array) } /* Verifica se o dado passado em str é um numero inteiro */ function is_int(str){ return str.toString().replace(/\D/g, '') == str } /* Verifica se o dado passado em str é um número */ function is_number(str){ return str.toString().replace(/[^0-9\.]/g, '') == str } /* * Método construtor * els : css seletor ou elementos {string|object} */ function Nojim(els){ if(is_string(els)) this.elements = document.getElementById(els); else this.elements = els; return this; } /* Informações */ Nojim.prototype.info = { version : 0.0006, author : 'Vinicius Borges', authorUrl : 'viniciusborges.com.br', copyright : 'Todos os direitos reservados - Vinicius Borges' }; /* * Identifica o navegador */ Nojim.prototype.browser = { msie: navigator.userAgent.toLowerCase().indexOf('msie') !== -1, mozilla: navigator.userAgent.toLowerCase().indexOf('mozilla') !== -1, webkit: navigator.userAgent.toLowerCase().indexOf('webkit') !== -1, chrome: navigator.userAgent.toLowerCase().indexOf('chrome') !== -1, safari: navigator.userAgent.toLowerCase().indexOf('safari') !== -1, opera: navigator.userAgent.toLowerCase().indexOf('opera') !== -1, version: navigator.appVersion, }; /* * Ao carregar todo o html */ Nojim.prototype.ready = function(fn){ stateRead = setInterval(function(){ if(document.body){ clearInterval(stateRead); fn.call(this); } }, 10); } /* * Adiciona um evento * @evt : evento {string} * @fn : função ao executar o evento {function} */ Nojim.prototype.on = function(evt, fn){ this.each(function(){ this.addEventListener('on'+evt, fn.call(this)) }); } /* * Percorre e aplica uma função a todos os elementos selecionados * fn : função a ser aplicada {function} */ Nojim.prototype.each = function(fn){ if(is_array(this.elements)){ for(i = 0; i < this.elements.length; i++){ fn.call(this.elements[i]); } }else{ fn.call(this.elements); } return this; } /* * Retorna o html dos elementos selecionados * Ou substitui o conteudo atual pelo passado na variável html * @html : conteudo que substituirá o conteudo atual {string} - opcional */ Nojim.prototype.html = function(html){ if(html !== undefined){ this.each(function(){ this.innerHTML = html; }); return this; } if(is_array(this.elements)) return this.elements[0].innerHTML else return this.elements.innerHTML } /* * Adiciona um html aos elementos selecionados * @tml : html a ser adicionado {string} */ Nojim.prototype.append = function(html){ this.each(function(el){ el.innerHTML += html }); return this; } /* * Adiciona uma class aos elementos selecionados * @c : class a ser adicionada {string} */ Nojim.prototype.addClass = function(c){ this.each(function(){ this.className += ' '+c; }) } /* * Remove uma class dos elementos selecionados * @c : class a ser removida {string} */ Nojim.prototype.removeClass = function(c){ this.each(function(){ this.className = this.className.replace(new RegExp('(\\S|^)'+c+'\\s|$'), '') }); return this; } /* * Procura uma class nos elementos Selecionados * @c : class a ser encontrada {string} */ Nojim.prototype.hasClass = function(c){ this.each(function(){ return this.className.match(new RegExp('(\\s|^)'+c+'(\\s|$)')); }); } /* * Busca um elemento dentro dos elementos já selecionados */ Nojim.prototype.find = function(){ return this; } /* * Seleciona o elemento pai de cada elemento já selecionado */ Nojim.prototype.parent = function(){ return this; } /* * Aciciona/Pega estilo aos elementos selecionados */ Nojim.prototype.css = function(css, val){ if(is_string(css)){ if(val !== undefined){ this.each(function(){ this.style[css] = val; }); }else{ var el = is_array(this.elements) ? this.elements[0] : this.elements; if(el.currentStyle) return el.currentStyle[css] else if(window.getComputedStyle) return document.defaultView.getComputedStyle(el, null).getPropertyValue(css) } }else{ for(var i in css){ this.each(function(){ this.style[i] = css[i]; }); } } return this; } /* * Instancia a classe de uma forma mais elegante */ function $(e){ var e = e == undefined ? window : e; return new Nojim(e); } /* * Exemplos * ------------------------------------ * estrutura básica recomendada * $(document).ready(function(){ * //script aqui * }); * ------------------------------------ * Verificar se é Internet Explorer * $(document).ready(function(){ * if($().browser.msie){ * alert('Internet Explorer'); * } * }); * ------------------------------------ */É a mesma sintaxe que a jQuery usa, só que é claro, muito menos recursos.. Se não for pedir muito, poderia deixar os créditos não é??!
  22. Olá, estou tentando fazer animação simples com o canvas, mas estou com um problema na hora de limpar o palco e renderizar o próximo frame, ele simplesmente não limpa o que foi criado com o método arc(). Segue o código: (function(){ var bg = { canvas: null, context: null, config: { width: 500, height: 500 }, color: { bgColor: '#00FF00', circleBorder: '#000000' }, start: function(){ this.canvas = document.getElementById('canvas'); this.context = this.canvas.getContext('2d'); this.config.width = this.canvas.offsetWidth; this.config.height = this.canvas.offsetHeight; }, render: function(){ this.context.clearRect(0, 0, this.config.width, this.config.height); this.context.fillStyle = this.color.bgColor; this.context.fillRect(0, 0, this.config.width, this.config.height); this.renderCircle(0); }, renderCircle: function(n){ this.context.strokeStyle = this.color.circleBorder; this.context.arc(this.circles[n].x, this.circles[n].y, this.circles[n].r, Math.PI*2, false); this.circles[n].x++; this.circles[n].y++; this.context.stroke(); }, circles: [{r: 50, x: 100, y: 60, dx: 1, dy: 1}] } window.addEventListener('load', function(){ bg.start(); bg.render(); window.setInterval(function(){ bg.render(); }, 20); }, false); })();O objetivo era que ele mostrasse um circulo se movendo do topo esquerdo para o canto inferior direito, isso até acontece, mas fica um rastro onde ele passou, justamente por não estar "limpando" o canvas. Eu já tinha feito algo semelhante antes, mas não sei o porque que agora está com este problema. Vo ficar tentando aqui, se alguém consegui, da um help ai. Vlw. Vinicius. Nossa, olha só, era só adicionar um context.beginPath(); Parece que ao postar no fórum a resposta vem automaticamente. Desculpem-me, mas isso realmente não passou à minha cabeça antes.
×
×
  • Criar Novo...