Jump to content
oomaikoo

Comparar variável no IF, ELSE

Recommended Posts

Boa noite pessoal, estou tentando fazer um código, para mostrar um banner em meu site, quando o usuário entrar, baseado na localização dele. É basicamente o seguinte: a API de geolocalização retorna o nome da cidade, e, se for a cidade, então mostre o banner. Se não for, mostre outro. O código JavaScript que estou usando é esse:

<script type="application/javascript">
    function geoip(json){
        var city = document.getElementById("user_city");
        city.textContent = json.city;
    }
</script>
<script async src="https://get.geojs.io/v1/ip/geo.js"></script>
A cidade é: <span id="user_city"></span> 



Esse código retorna o nome da cidade no <span id>.

Porém eu preciso fazer um IF, ELSE no próprio JavaScript, para mostrar o banner ou não. Seria basicamente assim:

<script type="application/javascript">
    function geoip(json){
        var city = document.getElementById("user_city");
        city.textContent = json.city;
    }
	
	if (city == "nomedacidade") {
	document.write ("<img src='banner1.jpg'></img>");
	}
	else {
	document.write ("<img src='banner2.jpg'></img>");
	}
	
</script>
<script async src="https://get.geojs.io/v1/ip/geo.js"></script> 



O problema é que a variável city não fica setada dentro do if, não retorna o nome da cidade, eu só queria comparar no if o nome da cidade com o que a API retorna.
Alguém tem alguma ideia?

Share this post


Link to post
Share on other sites

E pq você não coloca esse if / else dentro da function ?. Bom, se não quiser .. tenta isso (Não testei, mas deve funcionar):

 

function geoip ( json )
{
    var city = document.getElementById("user_city");
    city.textContent = json.city;

 

    verifyCity ( json.city ) // Cria e chama uma func que faz essa verificação
}

 

function verifyCity ( cityName )
{
    if ( cityName === "nomedacidade" )
    {
        document.write ("<img src='banner1.jpg'></img>")
    }
    else
    {
        document.write ("<img src='banner2.jpg'></img>")
    }
}

Share this post


Link to post
Share on other sites

Não funcionou, não retorna nada :/

<script type="application/javascript">
function geoip ( json )
{
    var city = document.getElementById("user_city");
    city.textContent = json.city;

 

    verifyCity ( json.city ) // Cria e chama uma func que faz essa verificação
}


function verifyCity ( cityName )
{
    if ( cityName === "Maceió" )
    {
        document.write ("Estou em Maceió")
    }
    else
    {
        document.write ("Não estou em Maceió")
    }
}
</script>
<script async src="https://get.geojs.io/v1/ip/geo.js"></script>

 

Share this post


Link to post
Share on other sites

Você pode remover esse " var city  " e deixar apenas  city = 

city = document.getElementById("user_city")  

Quando você declara a variavel dentro da função com a palavra "var antes", ela nao vai poder ser usada fora da função.

se declarar sem isso, então pode usar.

Share this post


Link to post
Share on other sites
1 hora atrás, oomaikoo disse:

Não funcionou, não retorna nada :/

 

Você ta chamando as funções ? olha:

 

<!DOCTYPE html>
<html lang="pt-BR">
 
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
 
<title> iMasters </title>
 
<style>
 
* { margin: 0 ; padding: 0 ; box-sizing: border-box ; }
 
</style>
</head>
 
<body>
 
</body>
 
<script>
 
window.onload = () => {
 
let json = { city : "São paulo" } // Simulando o recebimento de um json
 
function geoip ( json )
{
document.write ( json.city ) // o json do parametro
checkCityName ( json.city )
}
 
function checkCityName ( name )
{
if ( name === "Maceió" )
{
console.log ( 'Estou em Maceió' )
}
else
{
console.log ( 'Não estou em Maceió, estou em', name )
}
}
 
geoip ( json ) // chamando a função
}
 
</script>
</html>

Share this post


Link to post
Share on other sites

@_FelipeOlvr Cara não consegui de forma alguma, você pode me ajudar por mensagem? é que sou leigo em Javascript. Essa função eu só consigo fazer em PHP. Estou precisando urgente para entregar esse pequeno script funcionando amanhã, agradeceria muito se pudesse me ajudar, sei que é simples pra você.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By quimera
      O problema seria simples se o script da página permitisse o autopreenchimento usando javascript, masssssssssssss...
      O site em questão não permite que o campo seja preenchido dinamicamente ou seja usando script (ele identifica a digitação do teclado para impedir isso)
      Eles devem usar algo como: onkeypress ou onkeyup e acumular os valores digitados numa variável para dispor isso no post/get
      Por que nesse caso, se foi simplesmente colado ou preenchido via script não vai aceitar já que provavelmente é acumulativo e não verificado se o campo foi preenchido.
      Então como preencher dinamicamente o campo usando javascript nesse caso?
    • By AndersonWS
      Boa tarde, já tentei muitas formas mas não consigo retirar o atributo required.
      O resultado que eu preciso é, quando retiro o required de um (name="posicao") o outro fica com required e vice-versa e também um aparece e outro some.
       
      Segue o código HTML.
      <select name="posicao" class="form-control option_escolhida" style="display:none" id="2" required="" disabled> <option value="" selected>Selecione</option> <option value="1">Espaco</option> <option value="2">Cursos</option> </select> <select name="posicao" class="form-control option_escolhida" style="display:none" id="4" required="" disabled> <option value="" selected>Selecione</option> <option value="4">Políticas de privacidade</option> </select> <div class="sem_option"><code>Sem posição definida</code></div> <div class="ini_option"><code>Posição inicial</code></div> <div class="main_option" style="display:none"> <input name="apelido" class="form-control apelido" placeholder="Nome do grupo" type="text" required="" disabled> </div> Segue o código javascrpt:
      $('.select_escolhida').on({change: listChildren}).trigger('change'); function listChildren() { if ( $(this).val() != '' ) { children = $('option').val(); $(".ini_option").show(); $(".option_escolhida").hide(); $(".option_escolhida").attr("disabled", true); $("#" + $(this).val() ).show(); $("#" + $(this).val() ).removeAttr("disabled"); $(".sem_option").hide(); if( ($(this).val() == '1')||($(this).val() == '3') ){ $(".main_option").show(); $(".apelido").removeAttr("disabled"); } else { $(".main_option").hide(); $(".apelido").attr("disabled", true); $(".ini_option").hide(); } } else { $(".sem_option").show(); $(".ini_option").hide(); $(".apelido").hide(); } }  
    • By biakelly
      Oi,
       
       não estou conseguindo fazer isso, podem me ajudar?
       
      <?php $botaoaluno = mysql_query("SELECT aluno FROM escola WHERE colegio_id='$colid'",$db); $alunoativo = mysql_num_rows($botaoaluno); if ($alunoativo = 1) { ?> <?php $pegaralunos = mysql_query("SELECT alunosdisponiveis FROM tabelasalunos WHERE userID='{$_SESSION['userid']}' and alunosID='{$objauALN["alunID"]}'", $db); $classe = mysql_num_rows($pegaralunos); if ($classe > 0) { ?> <button name="geraralunos">Aluno presente</button> <?php } else { ?> <button name="geraralunos">Aluno faltante</button> <? } } else{ ?> <p>Não tem aluno</p> <?php } ?> o que eu preciso, se o alunoativo for igual a 1, fazer o próximo IF, mas se ele for igual a 0 mostrar a mensagem (não tem aluno)
    • By dmelo
      Eu tenho um script   $('.btn').click();   mas ele só funciona se eu deixar o mouse em cima do elemento.
      Como fazer pra ele funcionar ignorando a posião do mouse?
      Agradeço muito quem puder me ajudar pois já procurei em vários fóruns mas não achei a solução.
    • By mamotinho
      Olá, estou com problemas, minha data está atualizando porém eu clico em um produto ele exibe o tempo sem atualizar . quando eu mudo de produto ele mostra os dois valores exemplo
      Produto 1: tem duraçao de: 1 dia e 13:023 PM
      Produto 2: tem duraçao de: 0 dia e 23:023 PM

      Quando eu clico no produto 1 ele exibe normalmente, porém quando mudo para o produto 2 ele fica atualizando o valor do dia do produto 1 e do produto 2 sempre mudando.
      segue abaixo como está o codigo

      JavaSCRIPT
       
      function anooo(mes,dia,h,m){ var mess = mes; var dias = dia; var hss = h; var mss = m; // Set the date we're counting down to var countDownDate = new Date(""+mess+" "+dias+", 2020 "+hss+":"+mss+":00").getTime(); // Update the count down every 1 second var x = setInterval(function() { // Get today's date and time var now = new Date().getTime(); // Find the distance between now and the count down date var distance = countDownDate - now; // Time calculations for days, hours, minutes and seconds var dayss = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); document.getElementById("days").innerHTML = dayss; document.getElementById("hrs").innerHTML = hours; document.getElementById("minus").innerHTML = minutes; document.getElementById("secs").innerHTML = seconds; this.remove(countDownDate); // If the count down is over, write some text if (distance < 0) { clearInterval(x); } }, 1000); } AQUI É O CHAMADO:
       
      <? if($result->Discount>=1){ $Month = date('M', strtotime($result->DateDiscount)); $Days = date('d', strtotime($result->DateDiscount)); $Hours = date('H', strtotime($result->DateDiscount)); $Minutes = date('i', strtotime($result->DateDiscount)); echo "<script>anooo('".$Month."','".$Days."','".$Hours."','".$Minutes."')</script>"; //echo "<script>alert('".$Month."')</script>"; ?> <ul class="time_sell remain_time"> <li> <dl> <dt class="blind">남은시간</dt> <dd> <span class='n_date day' id='days'></span> <span class='date'>일</span> <span class='n_time hour' id='hrs'></span> <span class='n_time minute' id='minus'></span> <span class='n_time second' id='secs'></span> <div id="countdown"></div> </dd> </dl> </li> </ul> <? } ?> eu já tentei de tudo mais sempre que mudo de produto ele exibe a data dos produtos anteriores em loop. a cada atualização do setInterval
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.