Any suggestions about this two simple javascript functions? (beginner asks)

I’m building up a simple blog from scratch. I’ve noticed that the blog needs JS to update the new posts section and to update some descriptive meta tags. I like to set up meta tags properly so when somebody shares the page, they get some details along with the URL.

So the two functions I’ve written are supposed to solve the previous issues, and are named:

  • updatePosts
  • setCurrentPostMetaTags

Both functions take an input object named posts. This object is modified by hand when a new post is created. The newest posts are on the start of the object. (new to old).

It with be impossible to share a working code, but the code is properly updating everything.
What I’m looking for is any advice on the way I’m writing the JS, or setting things up.

I’d be happy to update this post with any extra requirement. Below it’s the posts object plus the two functions.

//posts object containing metadata for posts. 
//New posts should be added on the top of the object
const posts = (
    {
        title:"Mr. Nobody: The Concept of Temperature",
        brief:"Mr. Nobody takes the thermometer into apart to answer. What is Temperature?",
        publishIn:"July 6th, 2020",
        folder:"post3"
    },
    {
        title:"Mr. Nobody: Pink Floyd Cover", 
        brief:"Guitar cover of Wish You Were Here By Mister Nobody",
        publishIn:"May 24th, 2020", 
        folder:"post2" //this isn't strictly necessary.
    }, {
        title:"Mr. Nobody: Thoughts on Web Dev", 
        brief:"Let's tell the story from the looser point of view. And Mr. Nobody comes in.",
        publishIn:"May 16th, 2020", 
        folder:"post1" //this isn't strictly necessary.
    }
        
    )


const updatePosts = (posts) => {    
    //index.html file is a directory up, I'm taking 
    // care of that fact using setStartDir
    let ul = document.getElementsByClassName("newposts")(0).getElementsByTagName("ul")(0)
    ul.innerHTML=""
    let setStartDir=".."
    if(window.location.pathname.endsWith("dist/")){
        setStartDir="."
    }
    for (let i=0; i<5 && i<posts.length; i++){
    //we only want 4 posts in the new posts section       
    ul.innerHTML += `
    <li><a href="${setStartDir}/post${posts.length - i}/">
    ${posts(i).publishIn}: ${posts(i).title}
    </a></li>n
    `
    }
    return 1
}

const setCurrentPostMetaTags = (posts) => {
    //next element contains all properties that vary between posts
    //and can be set using posts object information.
     let metaProps = {
        page:{
            description:'meta(name="description")'
        },
        og:{
            title:'meta(property="og:title")', 
            description:'meta(property="og:description")', 
            image:'meta(property="og:image")'
        },
        twitter:{
            title:'meta(name="twitter:title")'
        }
    }
for(let i = 0; i<posts.length; i++){
if(window.location.pathname.endsWith(`post${posts.length - i}`))
    {
        document.querySelector(metaProps.page.description).setAttribute("content", `${posts(i).title}`)
        console.log("updated")
        document.querySelector(metaProps.og.title).setAttribute("content", `${posts(i).title}`)
        console.log("updated")
        document.querySelector(metaProps.og.description).setAttribute("content", `${posts(i).brief}`)
        console.log("updated")
        document.querySelector(metaProps.og.image).setAttribute( "content", "../images/cartoon-min.jpg")
        console.log("updated")
        document.querySelector(metaProps.twitter.title).setAttribute("content", `${posts(i).title}`)
        console.log("updated")
        return 1
    }
}
return -1
}

updatePosts(posts)
setCurrentPostMetaTags(posts)

javascript – fullCalendar v5 eventOverlap resource

I’m trying to check if events are overlaping at same resource.

Is there any way in eventOverlap function to get stillEvent and movingEvent resourceId where each event are positiones at overlapping moment?

I tried this but everything is undefined:

eventOverlap: function (stillEvent, movingEvent) {
        console.log(stillEvent.resource);
        console.log(movingEvent.resource);
        console.log(stillEvent.resourceId);
        console.log(movingEvent.resourceId);
}

Thanks.

javascript – Não está exibindo todos valores do array na tela

Fiz uma chamada para pegar valores JSON vindos de um código externo(PHP). No console.log, mostra todos os dados certinho, mais quando vou passar do jquery para exibir na tela, ele só me retorna o último valor do array.

$(document).ready(function (){
  var url = "https://siteteste98874.com/select.php";
            $.getJSON(url, function(result){
                console.log(result);
                $.each(result, function(i, field){
                    var nome = field.nome_produto;
                    $('.nome td').text(nome);
                });
            });
}); 
<h3>Todas Lojas</h3>
                    <table class="table">
                        <thead>
                        <tr>
                            <th>Nome</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr class="nome">
                            <td></td>
                        </tr>
                        </tbody>
                    </table>

No console.log mostra todos os nomes das lojas
inserir a descrição da imagem aqui

Já na tela só é mostrado o último valor do array

inserir a descrição da imagem aqui

Monitoring Javascript functions in android application

Is there an advanced technique i can monitor all JavaScript functions calls in runtime on android application(WebView), as well as view it`s results (like console.log()) ?

javascript – alguem me poderia dizer que está errado neste codigo

A pergunta é

Execute uma função chamada passandoPelosPares() que mostra pelo console aqui eu tenho o valor de x para cada valor PAR que percorra i de 0 até e inclusive 6.

function passandoPelosPares(){
for(var i=0;i<7;i++){
if (i%2 == 0) {
return console.log(‘ aqui eu tenho o valor de ‘ + i + ‘,’);
}
}
}

php – Filtro por data em uma tabela com javascript

Aviso agora de início que para a minha pergunta, irei utilizar apenas dados focados para o problema, sem necessitar colocar todos os campos de uma tabela e todo o corpo HTML. Demorei bastante para elaborar esta pergunta, mas tenho certeza que ficou bem explicado.

Tenho a tabela cde_venda_detalhe com todas as vendas realizadas da empresa. Nesta tabela tem a coluna criadoem, que indica a data da realização da venda.

Exemplo:

| id | preco  | criadoem                  |
| 1  | 199.99 | S:27. 29/06/2020 às 11:40 |
| 2  | 151.00 | S:27. 02/07/2020 às 13:20 |
| 3  | 19.99  | S:27. 05/07/2020 às 18:00 |
| 4  | 120.00 | S:28. 06/07/2020 às 09:00 |
| 5  | 12.50  | S:28. 06/07/2020 às 10:10 |

A coluna é do tipo varchar, tendo a semana, dia, mês, ano e hora da realização da venda: date('S:W. d/m/Y às H:i')

Utilizo 5 filtros diferentes na tabela do HTML:

  • Total
  • Diária
  • Semanal
  • Mensal
  • Anual

Este é meu código atual (Funcionando):

$dia = date('d/m/Y');
$semana = date('S:W.');
$mes = date('m/Y');
$ano = date('Y');

$filtro = 0;

if ($filtro == 0) {
    $sql = "SELECT * FROM cde_venda_detalhe";
} else if ($filtro == 1) {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$dia%'";
} else if ($filtro == 2) {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$semana%' AND criadoem LIKE '%$ano%'";
} else if ($filtro == 3) {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$mes%'";
} else if ($filtro == 4) {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$ano%'";
}

$data = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if ($data('total') == 'Total') {
    $sql = "SELECT * FROM cde_venda_detalhe";
}
if ($data('diaria') == 'Diaria') {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$dia%'";
}
if ($data('semanal') == 'Semanal') {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$semana%'";
}
if ($data('mensal') == 'Mensal') {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$mes%'";
}
if ($data('anual') == 'Anual') {
    $sql = "SELECT * FROM cde_venda_detalhe WHERE criadoem LIKE '%$ano%'";
}
<form method="post" enctype="multipart/form-data">
     <button name="total" value="Total" type="submit"> Total</button>
     <button name="diaria" value="Diaria" type="submit"> Diária</button>
     <button name="semanal" value="Semanal" type="submit"> Semanal</button>
     <button name="mensal" value="Mensal" type="submit"> Mensal</button>
     <button name="anual" value="Anual" type="submit"> Anual</button>
</form>

<table>
      <thead>
            <tr>
               <th>Id da Venda</th>
               <th>Preço da Venda</th>
               <th>Data da Venda</th>
            </tr>
      </thead>
      <tbody>
      <?php foreach ($pdo->query($sql) as $row) { ?>
            <tr>
               <td><?php echo $row('id'); ?></td>
               <td><?php echo $row('preco'); ?></td>
               <!--Por questão de estética, não exibo a semana na tabela-->
               <td><?php echo substr($row('criadoem'), 5); ?></td>
            </tr>
      <?php } ?>   
      </tbody>
</table>

Porém, gostaria desse filtro sem precisar sempre enviar um formulário, ou seja, em javascript, porém javascript não é meu forte.

Agradeço desde já.

javascript – Muda a função nativa do console.log

Poder podes… mas desaconselho. Outras pessoas que estejam a usar o teu código vão ter sérios problemas em encontrar onde esse método foi sobre-escrito.

Tendo dito isso, podes por exemplo adicionar >>> a todos os logs assim:

globalThis.console = {
  log: console.log.bind(null, '>>>>')
}
console.log('Teste!');

Podes manter uma referência à antiga também:

globalThis.consolaAntiga = console;
globalThis.console = {
  log(...args) {
    globalThis.consolaAntiga.log(':::', ...args);
  }
}
console.log('Teste!');
globalThis.consolaAntiga.log('Teste 2');

Esse código funciona no Browser e no Node.js

javascript – Js Crear multiple instancia en export default

Estoy teniendo un problema, funciona correctamente en la primera llamada a Paginator el problema es al volver a llamarla en un cambio de pagina.

Clase Paginator

const Paginator = {
  constructor() {
    this.data = ();
  },
  data(data) {
    this.data = data;
    return this;
  },
  page(number) {
    this.page = number;
    this.data = this.data(number - 1);
    return this;
  },
}

export default Paginator;

Import

import Paginator from '../../helpers/Paginator';

Llamada

const paginate = Paginator
        .data(challenges)
        .page(page);

      const { data } = paginate;

cuando intento cambiar a .page(2) me arroja lo siguiente

TypeError: _helpers_Paginator__WEBPACK_IMPORTED_MODULE_6__.default.data is not a function

javascript – Inserir código de país em máscara de telefone e gerar saída E-164

Já utilizo uma máscara de telefone cerca de 18 meses e funciona bacana. (@Netinho Santos grato pelo apoio). Ocorre que preciso agora mandar a saída no formato string com o código de país +5517995556666.

Alguma dica de fazer isso no javascript? Grato a todos

javascript – How to Make addEventListener work on submit

am having problem making this to work on submit
it works well when using

document.getElementById("gets").addEventListener("click", b_button);

but not workng when i use

document.getElementById("gets").addEventListener("submit", b_button);

is there away to make it work on submit than using click

    <form method="post">
          
              <button type="submit" id="gets">Submit</button>
             <p id="error"></p>
            
   
          </form>
    
   
    <script>
       function b_button() {
    document.getElementById("gets").disabled = true;
    var time_meter = 10;
    var runTimer = setInterval(function() {
        if (time_meter <= 0) {
            clearInterval(runTimer);
            document.getElementById("error").innerHTML = "";
        } else {
            document.getElementById("error").innerHTML = 'counting ' + time_meter;
        }
        time_meter -= 1;
    }, 1000);
    setTimeout(function() {
        document.getElementById("gets").disabled = false;
    }, 10000);

}

document.getElementById("gets").addEventListener("submit", b_button);
    </script>