Tenho a seguinte section na minha página:
<section>
<h3 >
<i class="fa fa-users"> </i> <span id="Listar"> Listas </span>
</h3>
</section>
Tenho um botão na minha página para alterar o texto dessa section quando o botão é clicado. Isso é feito chamando a seguinte função javascript:
function Produtos()
{
document.getElementById("Listar").innerHTML="Lista de Produtos";
}
Quando o botão é clicado e a função invocada, o texto é alterado de “Listas” para “Lista de Produtos”, conforme o código. O problema é que o texto retorna ao seu estado original, isto é, como está escrito na página (“Listas”), no mesmo segundo após a alteração ser feita pelo javascript, anulando assim a alteração feita pelo mesmo. É feito a alteração, mas no mesmo segundo é desfeito essa alteração. O elemento está num estado A, é alterado para um estado B, e no mesmo segundo, é alterado novamente para o estado A (voltando da forma como estava). Por qual motivo isso ocorre? Isso é algum bug do JavaScript no meu computador? O que está fazendo o conteúdo voltar ao seu estado original?
Provavelmente o button está fazendo um submit. Tente fazer ele assim:
<button type="button" onclick="Produtos()">Produtos</button>
O botão que é feito a alteração do texto do Span é um botão de um menu copiado do bootstrap… Abaixo está o código do menu:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Lanchonete</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Vendas
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Local</a></li>
<li><a class="dropdown-item" href="#">Domicilio</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Compras</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Cadastros
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="./index.php?p=Produtos" onclick="Produtos();">Produtos</a></li>
<li><a class="dropdown-item" href="./index.php?p=Clientes" onclick="">Clientes</a></li>
<li><a class="dropdown-item" href="./index.php?p=Funcionarios" onclick="">Funcionarios</a></li>
<li><a class="dropdown-item" href="./index.php?p=Contatos" onclick="">Contatos</a></li>
<li><a class="dropdown-item" href="./index.php?p=EstadoVenda" onclick="">Estado de Venda</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Anotacoes</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Contas
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">A Receber</a></li>
<li><a class="dropdown-item" href="#">A Pagar</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Pesquisar</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Relatorios</a>
</li>
</ul>
</div>
</div>
</nav>
A página que eu estou tentando fazer a alteração é inserida num index por meio de um “Require Once” ou de um “Include”:
<div class="container-fluid">
<?php
$valor = @$_GET['p'];
if ($valor == "Produtos")
{
require_once 'Lista.php';
}
// include __DIR__."/Lista.php";
?>
</div>
<a class="dropdown-item" href="./index.php?p=Produtos" onclick="Produtos();">Produtos</a></li>
Vc tem um link com um onclick. Acho que isso não funciona, pq o link será executado no mesmo momento em que o javascript é invocado. Porém, o link irá forçar o navegador a atualizar a tela.
Ou vc usa o link (href) ou o onclick (javascript).