Questão nº 34
Questão de Tecnologia da Informação · FCC TRE-PR 2017 (nº 34)
FCC2017Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de SistemasTecnologia da Informação
Gabarito: Cver comentário ↓
Considere a página HTML abaixo.
<!DOCTYPE html>
<html>
<head><title>Home</title></head>
<body>
<script>
var cargos = ["Promotor", "Juiz", "Desembargador"];
var i = 0;
var texto = "";
while(cargos[i]) {
texto += cargos[i] + "<br>";
i++;
}
document.getElementById("exibe").innerHTML = texto;
</script>
<p id="exibe"></p>
</body>
</html>
Para que todos os valores contidos no vetor cargos sejam exibidos pelo navegador,
- Atodo o conteúdo do script deve ser movido para o interior do cabeçalho delimitado pelas tags `<head>` e `</head>`.
- Ba instrução
while(cargos[i])deve ser modificada parawhile(cargos[i]==true). - Ca instrução `<p id="exibe"></p>` deve ser colocada imediatamente após a abertura da tag `<body>`. (alternativa correta)
- Da instrução `texto += cargos[i]` deve ser modificada para `texto = cargos[i]`.
- Ea instrução `document.getElementById("exibe").innerHTML = texto;` deve ser modificada para `document.println(texto);`.
Resposta comentada
Gabarito Alternativa C
O conceito-chave aqui é que o JavaScript só consegue manipular elementos HTML que já foram carregados e processados pelo navegador. Se o seu código JavaScript tenta encontrar um elemento HTML antes que ele exista na página, ele não vai conseguir.
- A) Incorreta: Mover o script para o
<head>faria com que ele fosse executado ainda mais cedo, antes mesmo de qualquer conteúdo do<body>ser carregado, piorando o problema. - B) Incorreta: A condição
while(cargos[i])é a forma correta e idiomática de verificar se um elemento existe no índiceie se ele é um valor "truthy" (verdadeiro) em JavaScript, o que é o caso para strings não vazias.cargos[i]==truecompararia o valor da string com o booleanotrue, o que sempre resultaria emfalsepara as strings do array, impedindo o loop de funcionar corretamente. - C) Correta: Quando o navegador encontra a tag
<script>, ele executa o JavaScript imediatamente. Se o elemento<p id="exibe"></p>ainda não foi lido e adicionado ao DOM (Document Object Model),document.getElementById("exibe")retornaránull. Ao mover a tag<p>para antes do<script>, o elemento já existirá quando o JavaScript tentar acessá-lo, permitindo que o conteúdo seja exibido. - D) Incorreta: A instrução
texto += cargos[i](que étexto = texto + cargos[i]) serve para adicionar cada cargo à variáveltexto. Se fossetexto = cargos[i], a variáveltextoseria sobrescrita em cada iteração, e no final conteria apenas o último cargo do array. - E) Incorreta:
document.println()não é uma função JavaScript padrão para manipulação do DOM em navegadores. A forma correta de inserir conteúdo HTML em um elemento existente é usandoinnerHTMLoutextContent.
Fonte: FCC TRE-PR 2017 Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.