Questão nº 38
Questão de Engenharia de Software · FCC TST 2017 (nº 38)
FCC2017Analista Judiciário - Análise de SistemasEngenharia de Software
Gabarito: Aver comentário ↓
Considere o fragmento de código JavaScript abaixo.
```javascript
if(document.p.q1[4].checked){
document.getElementById("x").innerHTML = "True";
}
```
Nesse código,
- A`p` é o nome de um formulário e `q1` é o nome de um campo do tipo radio. (alternativa correta)
- Bhá um erro na comparação que deveria ser
if(document.p.q1[4].checked==true). - C`x` é o id de um campo do tipo checkbox que será marcado como selecionado.
- Dpara o bloco estar correto `innerHTML` deve ser substituído por `write`.
- E`p` é o id de um formulário e `q1` é o id de um campo do tipo checkbox.
Resposta comentada
Gabarito Alternativa A
Em JavaScript, é comum acessar elementos de formulários HTML usando seus nomes, especialmente em abordagens mais antigas ou específicas para formulários.
- (A) Correta: Nesta sintaxe
document.p.q1[4].checked,prefere-se ao nome de um formulário (<form name="p">). Dentro desse formulário,q1refere-se ao nome de um campo (<input type="radio" name="q1">). O índice[4]indica que há múltiplos campos com o mesmo nomeq1(como em um grupo de radio buttons), e estamos acessando o quinto elemento (índice 4). A propriedade.checkedé usada para verificar se um radio button está selecionado. - (B) Incorreta: A propriedade
.checkedjá retorna um valor booleano (trueoufalse). Portanto,if(document.p.q1[4].checked)é uma condição perfeitamente válida e idiomática em JavaScript. Comparar==trueé redundante e não é necessário. Armadilha da banca: Muitos iniciantes pensam que a comparação explícita==trueé sempre obrigatória, mas para valores booleanos, a própria variável já serve como condição. - (C) Incorreta:
document.getElementById("x")seleciona um elemento pelo seu id.innerHTML = "True"define o conteúdo HTML desse elemento para a string "True". Isso não marca um checkbox como selecionado. Para marcar um checkbox, usaríamosdocument.getElementById("x").checked = true;. - (D) Incorreta:
innerHTMLé a propriedade correta para alterar o conteúdo de um elemento HTML específico.document.write()escreve diretamente no fluxo do documento, geralmente sobrescrevendo o conteúdo da página se usado após o carregamento, e não é o método apropriado para atualizar o conteúdo de um elemento específico. - (E) Incorreta: Se
pfosse um id, a forma correta de acessá-lo seriadocument.getElementById("p"). A sintaxedocument.pacessa um formulário pelo seu nome. Da mesma forma,q1é acessado pelo nome dentro do formuláriop, não pelo id. Além disso, o índice[4]implica uma coleção de elementos com o mesmo nome, o que não se aplica a ids (que devem ser únicos).
Fonte: FCC TST 2017 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.