-
Total de itens
1339 -
Registro em
-
Última visita
-
Dias vencidos
15
Tudo que Omar~ postou
-
Assim como o colega sitou; você nunca deve possuir mais de um elemento com o mesmo id="" E isso já vi que lhe foi dito várias/milhares vezes, então porque continua comentendo o mesmo erro? Bem, mesmo que não deveria fazer isso vou lhe dar o que está tentando fazer já mastigado e engolido. É algo completamente abstraído ou seja não há muito o que se preocupar com todo o contexto pois o único que vai saber quais elementos devem ser manipulados é o javascript. Então só informar uma tag <div> com um id (QUE NUNCA DEVE SE REPETIR) para a função e ela faz o resto Dentro dessa tag <div> você coloca os elementos <a> de dentro desses a img <style> #box1 { max-width: 190px; height: 60px; position: relative; overflow: hidden } #box1 > a { position: absolute; top: 0; left: 0; opacity: 0; transition: opacity .8s linear } #box1 > a.selected { opacity: 1 } #box1 > a > img { width: 100%; height: inherit } </style> <div id="box1"> <a href="link1"> <img src="slide1.png" alt="" /> </a> <a href="link2"> <img src="slide2.png" alt="" /> </a> <a href="link3"> <img src="slide3.png" alt="" /> </a> <a href="link4"> <img src="slide4.png" alt="" /> </a> </div> <script> function slide(ID_UNICO) { var caixa = document.getElementById(ID_UNICO), limite = (caixa.childElementCount - 1), contador = 0, intervalo = undefined; caixa.children[0].classList.add('selected'); intervalo = setInterval(exemplo, 1000); function exemplo() { caixa.children[contador].classList.remove('selected'); (contador === limite ? contador = 0 : contador++); caixa.children[contador].classList.add('selected'); } caixa.addEventListener('mouseenter', function () { clearInterval(intervalo); }, false); caixa.addEventListener('mouseleave', function () { intervalo = setInterval(exemplo, 1000); }, false); } slide('box1'); // Informe o id="" do local onde contém os elementos </script>
-
Bom, eu não uso o PHPStorn uso o ApacheNetBeans e isso no netbeans quer dizer que a erros de código no(s) arquivo(s) Na maioria das vezes erros bobos de escrita é um simbolo aqui ou ali que não deveria ter a falta de algum contexo etc... Se for isso mesmo acredito que ele te informa "em vermelho" o arquivo, abrindo-o ele te informa a linha do erro, geralmente marcada em vermelho também.
-
Renderizar que dizer que os conteúdos já vão está no documento, não sendo necessário carregar novamente ou ficar carregando repetitivamente a mesma coisa. No entando dependendo do contexto pode ser necessário que o conteúdo seja atualizado e isso pode ser feito somente quando for necessário. A ferramenta para isso eu sugiro: https://socket.io/ No seu caso a função load do jQuery irá executar um ajax toda vez que o elemento é clicado, ou seja o conteúdo a ser exibido tem que ser recarregado tanto para seu usuário quanto para seu servidor. Que tem de analizar a requisição > processar-la > obter o retorno > definir o html e entregar pera o usuário, daí o hadware do usuário recebe os dados > analiza > compila > depois re-escreve o html. Ou seja almenta o custo de processamento para ambos. Sobre o expandir ou recolher o(s) elemento(s) A coisa é simples: Ter um elemento no caso um <button> que se refere a outro elemento, quando esse buttom é clicado seu elemento de referência é expandido e os demais elementos iguais são retraídos. Bastando apenas utilizar do CSS onde um classificador diz que o elemento tem altura 0 "zero", ao clicar o obtão que o ferere, um função checa todos semelhantes aqueles que não é o alvo o classificador que diz que o elemento deve ter zero de altura é adicionado. E no alvo esse classificador é removido. Veja um exemplo bem básico: Lógico que para um efeito mais preciso principalmente para ter a correta altura dos elementos é necessário maior intenvensão do script, mas com o básico já se dar para ter a ideia como a coisa tem de ser... Retraia tudo, quando for o alvo expanda se ele ainda não foi expandido, do contrário se ele já está expandido retraia ele.
-
Não vou reinventar a roda aqui porque já criei um script para tal.... https://github.com/Spell-Master/sm-web/tree/master/javascript/Accordion Uma ponderação.... Quer dizer que toda vez que uma pessoa clicar um conteúdo será recaregado mesmo sem precisar recarregar? Tire essa coisa de .load do jquery, pré renderize tudo você pouca internert dos seus usuários e agiliza em muito "MAS MUITO MESMO" no desempenho. Caso seja necessário uma suposta atualização coisa que não acredito que seja, use o socket para ver se algo foi modificado e então re-defina o html e nada de usar essa coisa de load do jquery
-
javascript Como ler arquivo TXT com JS Puro?
Omar~ respondeu ao tópico de Felipe Guedes Coutinho em Javascript
Não está fazendo nada de errado. O problema que para XMLHttpRequest ser aceito pelo navegador é necessário um protocolo http. Francamente nunca usei o javascript sem um protocolo http, acredito eu que nem seja a linguagem mais adequada para esse fim, preferiria usar C++. Talvez uma solução seria você criar um array ou um objeto com as instruções SQL e apenas acessar cada índice para obter a instrução. Por fim como dito sou leigo enquanto a usar o javascript para essa situação portanto não poderei ajudar mais do que isso. E a propósito.... Ao invés de zipar e enviar além de ter o trabalho que está tendo já ouviu falar no https://github.com Assim você e seus amigos poderiam trabalhar ao mesmo tempo no mesmo projeto cada um fazendo o que tem de fazer sem interferir no que o outro faz. Assim sendo você poderia cuidar da parte das instruções SQL e os outros nos demais afins. -
javascript Como ler arquivo TXT com JS Puro?
Omar~ respondeu ao tópico de Felipe Guedes Coutinho em Javascript
Para você usar a API FileReader primeiro você tem de converter o arquivo para um Blob usando a api Blob. No entanto é possível também ao se criar o objectURL com o arquivo é até mais simples porém trabalho desnecessário. Como o arquivo está dentro do projeto a melhor e mais prática solução é mesmo usando a API XMLHttpRequest. var arquivo = 'texto.txt'; // Mude isso conforme o valor do <select> var xhr = new XMLHttpRequest(); xhr.responseType = 'text'; xhr.open('GET', arquivo, true); // Forneça o caminho e o arquivo de texto para ser lido xhr.addEventListener('readystatechange', function () { if (xhr.readyState === 4 && xhr.status === 200) { console.log( xhr.responseText ); } }, false); xhr.send(); -
javascript Função mostra div dando scrool na tela
Omar~ respondeu ao tópico de Giovanird em Javascript
Experimente esse script meu https://github.com/Spell-Master/sm-web/tree/master/javascript/Accordion É no contexto do que está tentando fazer. Basta apenas adicionar a estrutura html do Accordion dentro do laço do foreach <?php foreach($array as $key => $value) { ?> <button class="acc-button">Nome do usuário aqui</button> <div class="acc-container"> Dados ocultos do usuário aqui </div> <?php } ?> -
javascript Função mostra div dando scrool na tela
Omar~ respondeu ao tópico de Giovanird em Javascript
Então você tem alguma função javascript que está fazendo o scroll sempre que detecta algum click essa ação é acionada independente de ser uma TAG <a> ou qualquer outra. Clique com o botão direito do mouse sobre algum link e selecione inspecionar. No inspetor você pode ver quaisquer eventos anexos ao elemento alvo. Caso não pode ser algum parente dele até chegar ao <body> É na maioria das vezes quando passo algum código aqui no fórum apenas escrevo aqui, então testei esse que lhe apresentei e funcinou como era de se esperar. Certifique-se que $cod no seu PHP não repete algum valor, caso então terás mais de 1 elemento com o mesmo #ID, aí não vai funcionar mesmo. -
javascript Função mostra div dando scrool na tela
Omar~ respondeu ao tópico de Giovanird em Javascript
Primeiro mude isso onClick para isso onclick O motivo de lançar o documento para o topo é isso: href="#" Você diz que o link é uma ancora do início do documento. Então basta apenas remover o atributo href No entanto sua função consome muito mais desempenho do que deveria consumir para uma tarefa tão simples. Veja como pode ficar mais fácil: <style> .esconde {display:none} </style> <a href="#" data-estado="<?= $cod ?>">Botão 1</a> <a href="#" data-estado="<?= $cod ?>">Botão 2</a> <a href="#" data-estado="<?= $cod ?>">Botão 3</a> <div id="minhaDiv<?= $cod ?>" class="esconde">Div 1</div> <div id="minhaDiv<?= $cod ?>" class="esconde">Div 2</div> <div id="minhaDiv<?= $cod ?>" class="esconde">Div 3</div> <script> // Obtem a lista dos elemntos clicáveis document.querySelectorAll('[data-estado]').forEach(function (b) { b.addEventListener('click', Mudarestado, false); // adiciona um evento click a cada um }); function Mudarestado(e) { e.preventDefault(); // Remove o comportamento padrão do navegador para o evento no caso "click" document.getElementById( 'minhaDiv' + e.target.dataset.estado ).classList.toggle('esconde'); // Remove se tiver ou adiciona se não tiver o classificador "esconde" } </script> -
Não sei qual a finalidade disso portanto irei abordar o que parece ser. A coisa começa em 0 e quando chegar a 10 volva para 0.... pois bem basta apenas resetar o que foi feito e deixar o callback rodando. if(contador == maximo){ /* func2(); // func2 apenas irá parar de chamar o callback */ contador = 0; // devolve o contador ao estado inicial element.innerHTML = contador; // devolve o HTMLelement ao estado inicial } // como o contador voltou a ser zero e a cada 1 segundo // o intervalo é re-executado essa condição irá se aciona novamente // reiniciando tudo do zero infinitamente
-
Variável intervalo não pode ser acessada em func2 porque é privada da func1, lá que criou só lá que pode ser usada. Variável intervalo não é um prototype window portanto não pode se limpo com clearInterval. Esperimente assim: var executa, intervalo = 1000, element = document.getElementById('idggg'); function func1() { executa = setInterval(function () { element.innerHTML += ' Hello '; }, intervalo); } function func2() { clearInterval(executa); }
-
Colocar parte de dado de um form em outro (de um input para outro input)
Omar~ respondeu ao tópico de GOD em Desenvolvimento frontend
Além do mais não dar para usar duas abas, a não ser que desenvolva o próprio browser para isso, o crie um extensão para algum já existente. Isso envolve segurança pessoal e nenhum navegador dá suporte nativo a manipulação de abas, por causa das arbtrariedades nocivas dessa ação. Em outro contexto como disse no mesmo tópico sobre a mesma questão elvantada pelo mesmo usuário, a coisa pode ser feita em um único formulário. Hora que se em form 1 definine dados >>>> envia os mesmos dados para form 2 que por sua vez envia para form 3 etc... A qualquer parte desse processo os dados do form 1 ou 2 sei lá; podem ser alterados, então para que usar mais de um formulário? Um vez que os dados podem ser substituídos/apagados removendo completamente a lógica de usar mais de um formulário. -
Ah sim, bom você pode fazer algo tipo isso: Selecionando alguma das opções no seletor, pegar seu valor e corre a página até o nocal do próximo formulário. Seguindo a ideia que apresentei antes pois com ela você também poderá enviar informações do form-1 para outro dessa forma: Daí teriamos mais no documento: <div data-opcao-1="">Outro formulário aqui...</div> <div data-opcao-2="">Outro formulário aqui...</div> <div data-opcao-3="">Outro formulário aqui...</div> Ou você pode diretamente adicionar um evento change no seletor, que ao altera-lo já rolaria a para o próximo form. Seria intereçante se o(s) próximo(s) fomularios tivessem um "display:none" sendo removido antes de ir até, assim o documento ficaria mais estético. Agora se a situação requerer dados que devem se cerregados de acordo com o primeiro formulário, uma de duas alternativas serão necessárias. - Ao invés de mostrar o próximo formulário um ajax para carregar um outro arquivo que faça uma busca em um banco de dados e que contenha o formulário, então os dados são povoados antes da renderização html. (O ponto ruim que mesmo com poucos dados deve ser recarregado a cara requisição) - Pré carregadar os dados necessários para cada condição, armazena-los em um JSON no javascript, assim sendo o formulário está presente e o javascript se encarrega de mostrar e povoa-lo com os dados. (O ponto ruim é que pesa para processar tudo, e com muitos registro a coisa pode ficar meio lenta). Tirando o caso de ter de acessar um banco de dados eu optaria por deixar tudo em um form, e só mostrar cada campo de acordo com o valor selecionado, fica algo mais prático no uso final. Exemplo: Tenho inputA e inputB, ambos no formulário e ambos ocultos, ao alterar alguma opção seja um seletor ou seja uma caixa de marcação, mostraria o input correspondente aquela opção de resetaria o valor o input que não seria utilizado. Nesse caso com uma caixa de marcação "checkbox/radio" é bem provável que poderia ser feito apenas com CSS, não sei, teria que replicar aqui e testar e não dar para simplesmente escrever o código aqui sem testar se não tenho certesa do resultado.
-
Não é um problema com função anônima e sim como manipular alguma por outra função... Enfim, consegui produzir uma solução concreta, daí me esbarrei em que fazer algo a respeito não trás benefício algum. Além do mais funções anônimas devem ser evitadas, por consumirem muito mais processamento. Mas a aplicação que estou desenvolvendo tem suporte para tais funções, mas não terá suporte a uma manipulação direta a elas.
-
Boas?! Então, venho aqui a pedir ideias sobre como identificar uma função anônima atribuída quando uma segunda função a declara. Basicamente tenho 2 funções: uma é chamada para adicionar o tipo de ação e qual função executar com o evento acionado. outra obtem o tipo e a função para remover o evento no elemento. on: function () { var $type = arguments[0], $listener = arguments[1]; if (!$_.isDefined(this[0].eventListener)) { this[0].eventListener = []; } this[0].eventListener.push({ type: $type, listener: $listener }); this[0].addEventListener($type, $listener, false); }, off: function () { var $type = arguments[0], $listener = arguments[1], $i = 0, $eventData = null; if ($_.isDefined(this[0].eventListener)) { for (; $i < this[0].eventListener.length; $i++) { $eventData = this[0].eventListener[$i]; if ($type == $eventData.type && $listener == $eventData.listener) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } else if ($type == $eventData.type) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } } } } Perceba que para registrar e mais tarde saber qual função foi atribuída ao evento para remover eu armazenei os valores em um array. E para remover apenas identifico se o argumento bate com os dados em algum índice do array. Até então tudo bem..... function adicionar() { elemento.on('click', minhaFuncao); } function remover() { elemento.off('click', minhaFuncao); } O probema está em funções anônimas quando declaradas dentro de outra função como isso: function adicionar() { elemento.on('click', function () { // o que fazer.... }); } Então até dar para identificar qual função a declarou, porém não dar para remover com removeEventListener pois essa função não é a ouvinte do elemento. Obs.: Até poderia apagar a função ou "desaturbir sobre o alvo", no entanto não é viável pois pode haver que mais tarde ou outras condições dependam da função. Até cheguei a solucionar "como quebra-galho": Ao invés de atribuir a função recebida pelo argumento em "on" eu atribuo uma outra função pré definida, e essa função checa do array, se houver um índice onde o objeto é o mesmo tipo de evento e a função requisitada também existe no array, essa pré definida executa a função original. Porém não é uma função real, e mais tarde se a pessoa quiser disparar a função digamos um click não pode a chamar seus atributos diretamente (porque seus atrinbutos não são dela e sim da pré definda), terá que chamar a função pré definida, pois é ela realmente a ouvinte. Tornando alvo inviável para quem tem baixo ou menos intimidade com o javascript Por fim até onde eu sei no javascript não há como manipular funções anônimas, por isso o que eu estou tentando fazer é inventar uma solução para algo que não existe. Nota: Nesse caso funciona pois não há uma outra função intermediária, mesmo que seja algo sem sentido de de fazer exemplo.on('click', function (e) { // o que fazer.... }); exemplo.off('click', function (e) { // o que fazer.... });
-
Me parece que algo nesse sentido, porém não dar para entender com uma pergunta tão incoerente <form method="post" action="" id="formulario"> <input type="text" name="nome" /> <select name="seletor"> <option value="">Selecione algo</option> <option value="opcao-1">Opção 1</option> <option value="opcao-2">Opção 2</option> <option value="opcao-3">Opção 3</option> </select> <button type="submit">Enviar</button> </form> <div id="resultado"> <p>Aqui vem o valor inserido no input[name="nome"] </p> <div data-nome=""></div> <p>Aqui vem o valor inserido no select[name="seletor"] </p> <div data-seletor=""></div> </div> <script> var formulario = document.getElementById('formulario'), resultado = document.getElementById('resultado'), form = null, mostra = null; formulario.addEventListener('submit', function (e) { e.preventDefault(); form = e.target; mostra = null; for (var i = 0; i < form.elements.length; i++) { if (form.elements[i].value) { mostra = resultado.querySelector('[data-' + form.elements[i].name + ']'); mostra.innerText = form.elements[i].value; } } return false; }, false); </script>
-
Também tem isso: https://github.com/Spell-Master/sm-web/tree/master/javascript/SlideCarousel
-
Nem precisa a tanto... <img src="banner-<?= rand(1, 3) ?>.jpg" alt="" /> Daí então é nessesário que exista os arquivos: banner-1.jpg banner-2.jpg banner-3.jpg
-
Aí não teria como.... teria sim.... No caso se não fosse buscar pelo operador LIKE teria que criar toda um lógica você mesmo onde cada caractere forma um busca real (criar um algorítimo para a situação). Acho desnessesário mediante ao aogoritimo nessessário a se criar buscasse algo viável no banco, o que daria no mesmo que usar o operador LIKE... então substuíndo ele pelo WHERE Na questão se o vamos da busca se for comp e o operador for o LIKE mesmo que seja computador o resultado da busca será indiferentimente. Ou seja mesmo criando uma lógica total o resultado é o mesmo usando o operador LIKE, tornando qualquer manobra para contornar totalmente desnecessário
-
O negócio é se acalmar e pensar nas possibilidades. Já que não se vai utilizar de meses/anos para que a preocupação com isso? Vamos a um exêcicio que criei aqui, é uma das centenas de possibilidades de como proceder com a solução do seu problema: Mostrar qual dia da semana é hoje e uma frase para cada dia, mas que alguns dias se repita a mesma frase. Isso deve acontecer independente do mês ou ano em que o código será executado. <?php date_default_timezone_set('America/Sao_Paulo'); function traduzirDia($diaAtual) { $dias = [ 'Sun' => 'Domingo', 'Mon' => 'Segunda', 'Tue' => 'Terça', 'Wed' => 'Quarta', 'Thu' => 'Quinta', 'Fri' => 'Sexta', 'Sat' => 'Sábado', ]; return (array_key_exists($diaAtual, $dias) ? $dias[$diaAtual] : 'Eu sei lá que dia da semana é hoje?!'); } $hoje = date('D'); echo ('Hoje é ' . traduzirDia($hoje)); switch ($hoje) { case 'Mon': case 'Tue': case 'Wed': case 'Thu': echo ("<p>E estamos dentro da semana...; é o jeito tomar uma cerveja porque a coisa está feia</p>"); break; case 'Fri': echo ("<p>Final de semana chegou! EEEBBBBBAAAAAAA!!! Já não aguentava tomar cerveja dentro da semana!</p>"); break; case 'Sun': case 'Sat': echo ("<p>E é final de semana, bora tomar uma cerveja!</p>"); break; }
-
Uai, é só criar uma tabela com colunas que registram serviço prestado dia da semana (pode ser os dias possíveis ou dias em que o serviço não será prestado) Daí no PHP consulta-se a data atual e compara com o valor do resgistro no banco de dados. Se tiver de acordo o serviço está ábil. Algo relativamente simples, mas um código para dar Ctrl+C & Ctrl+V fica complicado de apresentar porque depende da arquitetura do seu projeto projeto aí. É o mesmo conceito básico $hoje = 2; if ($hoje >= 2 && $hoje < 7) { } Der uma lida nesse artigo pois vai presisar para trabalhar com datas no php: https://www.php.net/manual/pt_BR/function.date.php
-
[Resolvido] Ajuda! Meu campo está exibindo o valor selecionado corretamente mas gravando como 0(zero) no banco de dados.
Omar~ respondeu ao tópico de Flaviaac em PHP
Bem observado @washalbano Aqui também não está sendo repassado o valor do input. Somente o valor do seletor. Olhando o cenário vejo periodicidade.php recebendo o ID do alvo então um select é feito para obter esse registro, então talvez por alguma inclusão processa_cadastro.php deve executar o insert Sendo nesse conceito posso presumir as seguintes alterações: Em periodicidade.php armazenar o valor de $row['descarte']; $periodo_doc= $row['descarte']; Então em processa_cadastro.php $tipo_doc = intval(filter_input(INPUT_POST, 'tipo', FILTER_SANITIZE_NUMBER_INT)); //$periodo_doc = intval(filter_input(INPUT_POST, 'descarte', FILTER_SANITIZE_NUMBER_INT)); Só que tem de ver se é por inclusão mesmo que processa_cadastro.php entra na equação. -
[Resolvido] Ajuda! Meu campo está exibindo o valor selecionado corretamente mas gravando como 0(zero) no banco de dados.
Omar~ respondeu ao tópico de Flaviaac em PHP
Olhando aqui não consegui identificar onde está o problema, mas dar para saber onde pode está ocorrendo. - Primeiro clique com o botão direito sobre a tag <select> #tipo e selecione inspecionar, olhe no html processado pelo navegador se as propriedade value desse seletor estão corretas. Se não estiverem o problema está na foma da leitura da tabela tipo_arquivo. - Se os values estão corretos certifique-se que no documento HTML não exista outro elemento com o id #tipo (isso em todo documento processado, até mesmo html carregado por ajax) Na via das dúvidas você pode remover o comando onchange do seletor e adicionar um ouvinte de eventos - Antes de enviar seu ajax verifique no console do navegador como os dados são processados através do comendo console.log( o que analisar ) "clique e inspecionar depois na aba console" - Se em todos os casos não deram a noção onde está o erro pode ser um problema relacionado ao jQuery, mas como não mexo com isso não posso ajudar. Até mesmo pode ser algo que passou despercebido por mim e o problema pode não ter nada haver com o que mencionei -
Tenta usar o comando print no css, então você dispensa alterar um elemento na header. Ele é justamente para personalizar quando a impressão é acionada @media print { /* suas definições */ } Também não sei se vai funcionar no seu caso, mas não custa tentar, ao invés de substituir o css, crie uma nova tag link na header com o javasript e adicione o css desejado então, nesse css contendo as definições personalizadas na teoria irá sobrescrever quaisquer css já carregado.
-
https://socket.io/get-started/chat O resto é auto explicativo. Ajudaria mais porém não mexo com jquery.