Pessoal, numa página jsp, tenho um script que diz o seguinte:
<script type="text/javascript">
document.write(getTipo("${item.tipoServico}"))
</script>
Esse “tipoServico” é uma variável de um bean que é preenchido ou com o valor “D” ou com o valor “O”.
Então é chamada uma função javascript que deve ler essa variável e retornar “Demanda” se a variável for “D” ou “Oferta” se a variável for “O”.
O problema que enfrento aqui é a sintaxe do javascript, e não encontrei nenhuma resposta na internet para esse problema específico (de comparação de variáveis).
O código atual da function é o seguinte:
function getTipo(valor){
if (valor = "D") {
return ('<f:message key="lblDemanda.text"/>');
} else if (valor = "O") {
return ('<f:message key="lblOferta.text"/>');
} else
return ('erro');
}
(lblDemanda.text e lblOferta.text são variáveis descritas em um arquivo properties que retornam “Demanda” e “Oferta”, respectivamente)
Com essa código, o valor retornado é Demanda, independente da variável valor ser “D”, “O” ou qualquer outro.
Implementando a function assim:
function getTipo(valor){
if (valor == "D") {
return ('<f:message key="lblDemanda.text"/>');
} else if (valor == "O") {
return ('<f:message key="lblOferta.text"/>');
} else
return ('erro');
}
O retorno é sempre “erro”, independente do valor do parâmetro.
E eu substituir os ambas duplos por simples os resultados permanecem os mesmos em ambos dos casos.
function getTipo(valor){
if (valor = 'D') {
return ('<f:message key="lblDemanda.text"/>');
} else if (valor = 'O') {
return ('<f:message key="lblOferta.text"/>');
} else
return ('erro');
}
function getTipo(valor){
if (valor == 'D') {
return ('<f:message key="lblDemanda.text"/>');
} else if (valor == 'O') {
return ('<f:message key="lblOferta.text"/>');
} else
return ('erro');
}
E se trocar o ordem dos ifs:
function getTipo(valor){
if (valor = "O") {
return ('<f:message key="lblOferta.text"/>');
} else if (valor = "D") {
return ('<f:message key="lblDemanda.text"/>');
} else
return ('erro');
}
function getTipo(valor){
if (valor = 'O') {
return ('<f:message key="lblOferta.text"/>');
} else if (valor = 'D') {
return ('<f:message key="lblDemanda.text"/>');
} else
return ('erro');
}
Vai retornar “Oferta”.
Ou seja, usando a comparação com sinal de igual simples (=) vai fazer o if sempre ser verdadeiro, e usando o sinal de igual duplo (==) vai fazer o if ser sempre falso.
Qual seria a sintaxe correta?