Questão nº 44
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2018 (nº 44)
Considere o código HTML com Javascript a seguir:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
var data = new Date();
var agora = data.getHours() + ":" + data.getMinutes();
$("#idLugar").append(agora);
</script>
</head>
<body>
<div id="idLugar"></div>
</body>
</html>
A hora não irá aparecer no <div> porque
- Ao `append` em jQuery não pode ser utilizado para containers vazios; deveria ter sido substituído por `html`.
- Bo objeto identificado por `idLugar` ainda não existe quando o script é executado. (alternativa correta)
- Co símbolo de `#` está faltando na frente da identificação na definição do `<div>`.
- Da variável `data` está escrita erradamente (está escrita em português).
- Eos métodos `getHours` e `getMinutes` estão escritos no plural, quando deveriam ser, respectivamente, `getHour` e `getMinute`.
Resposta comentada
Gabarito Alternativa B
O DOM (a estrutura de elementos da página) é montado de cima para baixo. Quando o <script> no <head> roda, o <div id="idLugar"> ainda não foi criado, então o jQuery não encontra nada para inserir a hora.
- (A) Incorreta: O
appendfunciona perfeitamente em containers vazios; o problema é que o container não existia na hora da execução, não que ele estivesse vazio. - (B) Correta: O script no
<head>executa antes do navegador processar o<body>, então o$("#idLugar")não encontra o elemento e oappendnão tem onde colocar a hora. - (C) Incorreta: O
#está correto no seletor jQuery ($("#idLugar")); na definição do HTML, oidnão leva#— isso é só na hora de referenciar via CSS/jQuery. - (D) Incorreta: O nome da variável (
data) é apenas um identificador em português, válido em JavaScript; não afeta a execução. - (E) Incorreta: Os métodos corretos da API de
Datesão exatamentegetHours()egetMinutes()(com "s"), não existegetHournemgetMinuteem JavaScript.
Armadilha da banca: A alternativa (A) é a mais tentadora porque muita gente acha que append só funciona em elementos com conteúdo, mas o erro real é de ordem de execução — o script roda antes do elemento existir. Para fixar: coloque o script no final do <body> ou use $(document).ready() para garantir que o DOM esteja pronto antes de manipular.
Fonte: CESGRANRIO BASA 01/2018 Técnico Científico - Área de Formação: Tecnologia da Informação. Reproduzida para fins de estudo.