Front end 3 Flashcards

1
Q

O (?) é uma interface de linguagem neutra que permite que o documento HTML seja atualizado dinamicamente.

A

DOM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

DOM significa (?). Isso porque nosso HTML é um documento o navegador para ler ele transforma em objeto, manipulável na estrutura do JavaScript.

A

Document Object Model

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Porque podemos digitar:
document.title > ‘Robotron 2000’
E não:
document.producao?

A

O title é padrão (tal como o body, head) e producao não, pois nós criamos tal método. Devemos usar document.getElementById ou class, ou queryselector!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Métodos para (?) elementos no HTML

document.getElementByID(id) - Recupera um elemento pelo ID.
document.getElementsByTagName(name) - Recupera um elemento pelo nome.
document.getElementsByClassName(name) - Recupera um elemento pelo nome da classe.

A

Selecionar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Propriedades e métodos para (?) elementos no HTML

element.innerHTML - Esta propriedade obtém ou altera qualquer elemento no HTML, inclusive tags.
element.innerText - Esta propriedade permite inserir textos no HTML.
element.value - Esta propriedade altera o valor de um elemento HTML
element.setAttribute(atributo, valor) - Este método altera o valor de um atributo de um elemento HTML.

A

Alterar/modificar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

(?) e (?) elementos

document.write() - Escreve no fluxo de saída do HTML.
document.appendChild() - Adiciona um elemento HTML.
document.removeChild() - Remove um elemento HTML.
document.replaceChild() - Substitui um elemento HTML.
document.createElement() - Cria um elemento HTML.

A

Adicionando e excluindo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Como modifico o texto dentro da tag “p” usando o DOM?
Atenção: quero alterar texto, e não o conteúdo!

<section class="container">
<div class="trono"></div>
<p id="texto">O inverno está chegando</p>
</section>
A

document.getElementById(“texto”).innerTEXT = “O inverno passou”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qual a forma correta de importar o arquivo JS no meu index.html?

<script src="js/main.js"></script>
ou
<link src="js/main.js"></link>

E em qual parte da página importamos? E por que?

A

Usando script

Colocamos na última linha possível, para evitar que impeça o carregamento da página (após o main)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como selecionamos o ID robotron utilizando o querySelector (selecionando pelo ID)?

section class=”robotron”

A

document.querySelector("#robotron")

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Explique o código abaixo ponto a ponto:

const robotron = document.querySelector(“#robotron”)

robotron.addEventListener(“click”, dizOi)

function dizOi() {
console.log(“oi”);
}

A

Foi criada a constante robotron, que corresponde ao id #robotron

O robotron recebeu um addEventListener (escutador de eventos) com função click (ou seja, clicou, disparou) que dispara a função “dizOi”

A função “dizOi” dispara um console.log no nosso DOM cada vez que é clicado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O código a seguir funcionaria?

A técnica presente aqui é o (?): é um comportamento presente no JavaScript que faz com que declarações de variáveis e funções sejam “elevadas” para o topo do escopo em que são definidas.

function myFunction() {
document.querySelector(“#retorna”).innerHTML = “Confirma”;
}

const elemento = document.querySelector(“#botao”);
elemento.addEventListener(“click”, myFunction);

A

Sim
Hoisting (içamento)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

As (?) são basicamente armazenadoras de códigos. Elas permitem que os códigos sejam “chamados” mais de uma vez.

A

Funções

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Exemplo de função (?): ela só será disparada aqui nesse caso
robotron.addEventListener(“click”, function() {
console.log(“Cliquei no robô”)
})

Exemplo de função de (?): nova forma, funciona do mesmo da anterior
robotron.addEventListener(“click”, () => {
console.log(“Cliquei no robô”)
})

Exemplo de função (?): ela pode ser disparada em outros casos (basta chamar):
function dizOi() {
console.log(“oi”);
console.log(“Welcome to Robotron 2000 (two thousand)”);
}

A

Anônima
Arrow
Nominada(denominada)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What’s the difference between:

1 - const controle = document.querySelectorAll(".controle-ajuste");
2 - const controle = document.querySelector(".controle-ajuste");
A

The querySelectorAll will choose all of the “.controle-ajuste” classes. The another one just catch the first element (with that class).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Explain this code:
~~~
const controle = document.querySelectorAll(“.controle-ajuste”);

controle.forEach((elemento) => {
elemento.addEventListener(“click”, () => {
console.log(“funcionou”);
})
})
~~~

A

The “forEach” works in the array context. When we select all of the elements with “.controle-ajuste” class we create a array for each!

When we click (“addEventListener(“click”…) we start the arrow function with console.log(“funcionou”). That happens everytime we click an element with that class “.controle-ajuste”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quando colocamos o parâmetro “evento” e pedimos que o console.log apresente ele, o que queremos saber?

controle.forEach((elemento) => {
    elemento.addEventListener("click", (evento) => {
        console.log(evento);
    })
})
A

Buscamos saber o que aconteceu com o clique. O evento vai trazer no console (F12) diversas informações.

17
Q

Qual o nosso objetivo com o código abaixo, considerando o HTML em seguida?

const controle = document.querySelectorAll(".controle-ajuste");

controle.forEach((elemento) => {
    elemento.addEventListener("click", (evento) => {
        console.log(evento.target.textContent);
    })
})
<section class="equipamentos">
            <form action="" class="montador">
                <div class="box montador-conteudo">
                    <div class="peca">
                        <label for="" class="peca-titulo">Braços</label>
                        <div class="controle">
                            <buttom class="controle-ajuste" id="subtrair">-</buttom>
                            <input type="text" class="controle-contador" value="00" id="braco">
                            <buttom class="controle-ajuste" id="somar">+</buttom>
                        </div>
                    </div> (...)
A

Ao clicar, quero que exiba o conteúdo textual (que é “+” ou “-“) do target (buttom). Ao clicarmos o console (F12) vai disparar o output + ou -

18
Q

Como o código a seguir funciona?
Para que serve o data attributes?

<div class="peca">
                        <label for="" class="peca-titulo">Braços</label>
                        <div class="controle">
                            <buttom class="controle-ajuste" data-controle="-">-</buttom>
                            <input type="text" class="controle-contador" value="00" data-contador id="braco">
                            <buttom class="controle-ajuste" data-controle="+">+</buttom>
                        </div>
                    </div>
const controle = document.querySelectorAll("[data-controle]");

controle.forEach((elemento) => {
    elemento.addEventListener("click", (evento) => {
        manipulaDados(evento.target.dataset.controle, evento.target.parentNode);
    })
})

function manipulaDados(operacao, controle) {
    const peca = controle.querySelector("[data-contador]")
    console.log(peca)
    if(operacao === "+") {
        peca.value = parseInt(peca.value) + 1;
    } else if (peca.value > 0){
        peca.value = parseInt(peca.value) - 1;
    }
}
A

O data attributes serve para desvincular o código JS do HTML, são utilizados para guardar valores em elementos HTML.

Nos braços, eu coloco “data-“ que armazenará + ou -.

No JS eu crio a constante com querySelecttorAll selecionando todos os data-controle.

Para cada data-controle tenho o gatilho eventListener de clique, que vai buscar (target) o “dataset” do meu controle e o nódulo pai e assim em diante.

Data-attributes não devem ser utilizados para dados visíveis, pois tecnologias de acessibilidade podem não identificar seus valores.

19
Q

Como faço para pegar (no JS) o atributo data do HTML abaixo?

  <h1>Lista de tintas:</h1>
  <ul id="lista">
    <li data-cor="laranja" data-tipo="tinta-exterior" onclick="mudaCores(this)" class="item">Tinta laranja</li>
    <li data-cor="vermelho" data-tipo="tinta-interior"  onclick="mudaCores(this)" class="item">Tinta vermelha</li>
  </ul>

Código JS

function mudaCores(elementos){
    var cores = elementos.xxxxxxxx("[data-cor]");
    var tipoElemento = elementos.xxxxxxxx("[data-tipo]");
  }
A
function mudaCores(elementos){
    var cores = elementos.getAttribute("[data-cor]");
    var tipoElemento = elementos.getAttribute("[data-tipo]");
  }
20
Q

Observe o código.
Como se classificam “cor” e tipo?
O código JS funcionaria?

<h1>Lista de tintas:</h1>
  <ul id="lista">
    <li cor="laranja" tipo="tinta" onclick="mudaCores(this)" class="item">Tinta laranja</li>
    <li cor="vermelho" tipo="tinta"  onclick="mudaCores(this)" class="item">Tinta vermelha</li>
  </ul>

JS

function mudaCores(elementos){
    var cores = elementos.getAttribute("[cor]");
    var tipoElemento = elementos.getAttribute("[tipo]");
  }
A

Sim, está usando data attribute personalizado. O prefixo data- não é obrigatório.

21
Q

1 - Como acesso o atributo “autor” do segundo objeto da lista “livros” (console.log)?
2 - Como altero o atributo “genero” do segundo objeto da lista para “Ficção”?
3 - Como acrescento o atributo “estoque” do segundo objeto da lista para “10”?
4 - Como eu deleto o atributo “editora” do segundo objeto da lista?

var livros = [
    {titulo: "Cangaceiro JavaScript",  
    autor: "Flávio Almeida", 
    genero: "Front-end", 
    editora: "Casa do código", 
    preco: 31.92},
		
    {titulo: "Introdução e boas práticas em UX Design",  
    autor: "Fabricio Teixeira", 
    genero: "UX & UI", 
    editora: "Casa do código", 
    preco: 31.92},
		
    {titulo: "Scrum",  
    autor: "Rafael Sabbagh", 
    genero: "Métodos Ágeis", 
    editora: "Casa do código", 
    preco: 31.92},
]
A

1 - console.log(livros[1].autor)
2 - livros[1].genero = “Ficção”
3 - livros[1].estoque = 10
4 - delete livros[1].editora

22
Q

Qual será o retorno do código?

var livros = {
titulo: “Cangaceiro JavaScript”,
autor: “Flávio Almeida”,
genero: “Front-end”,
editora: “Casa do código”,
preco: 31.92,
chamaLivro: function() {
return this.autor;
}
}
console.log(‘O autor do livro se chama ‘ + livros.chamaLivro())

A

O autor do livro se chama Flávio Almeida

23
Q

O que a tag “controls” permite?
<audio></audio>

A

Permite tocar, alterar volume, avançar e recuar áudio (player de áudio)

24
Q

Como se chama esse recurso com cifrão?

Aqui está um nome comum: ${nome}

A

Template string

25
Q

O laço de repetição seria uma chamada em sala de aula. Ele é disparado ao carregar a página. Ao abrir a porta o professor chama o nome de todos os alunos em sala (0, 1, 2, 3 etc) esse é o laço.

Em seguida, ao entrar o diretor, o mesmo seleciona um aluno qualquer (exemplo, o 2) que será o click do botão (vai disparar a function). Sem o professor ter realizado a chamada no início (ao abrir a porta) o diretor nunca poderia chamar o aluno 2, pois ele antes não foi nomeado. Essa técnica é chamada de (?)

Por exemplo, o Alura Midi:

while (contador < listaDeTeclas.length) {

    const tecla = listaDeTeclas[contador];
    const instrumento = tecla.classList[1];

    const idAudio = `#som_${instrumento}`
    //console.log(idAudio);

    tecla.onclick = function () {
        tocaSom(idAudio);
    }
    contador = contador + 1;
   //console.log(contador);
}
A

Closure

26
Q

O que é um “crud”?

A

Create, read, update and delete

27
Q

Para que serve o prevent default aqui?

formTask.addEventListener('submit', (evento) => {
    evento.preventDefault()
    const task = {
        descricao: textarea.value,
        concluida: false
    }
    tarefas.push(task)
    const taskItem = createTask(task)
    taskListContainer.appendChild(taskItem)
})
A

Serve para não atualizar a página após o submit do formulário (sim, a página atualiza automaticamente)

28
Q

**cookie vs localstorage vs sessionstorage
**

O (?) guarda informações de forma persistente no navegador, sendo em média 5MB de armazenamento padrão, podendo variar dependendo do navegador utilizado. Este limite pode ser aumentado pelo usuário quando necessário, no entanto apenas alguns navegadores suportam isso. Os dados salvos são apenas do tipo string texto.

Os (2) guardam informações de forma persistente no navegador, sendo até 4KB de armazenamento por (2), bem menos que (1). Cada (2) funciona como um arquivo criado para armazenar informações de acesso do usuário. Isso pode incluir detalhes como a localização do acesso ao site, o endereço de e-mail utilizado para fazer login no navegador e quais produtos de um site foram clicados.

Para acessar esses (2), muitas empresas exibem pop-ups que solicitam a autorização do usuário para o uso dessas informações, uma vez que esses dados são considerados sensíveis.

O (3) é bem similar ao (1). Sua diferença é que os dados não são salvos de forma persistente, ou seja, ao fechar o navegador eles são perdidos. Este tipo de armazenamento é utilizado quando queremos que a pessoa usuária utilize os dados apenas enquanto estiver com o site aberto.

A

localstorage
cookie
sessionstorage

29
Q

Operador ternário “?” (como funciona?)

let teste = condição ? valor1 : valor2
A

se a condição for true, será valor1, senão valor2

30
Q

let valores = valores” é essencialmente o mesmo que let valores = valores != ** (1)** escrito de forma diferente

A

null

31
Q

textcontent vs innerhtml?

Você usa (1) quando quer que o texto adicionado seja convertido em elemento do DOM. Você usa (2) quando quer alterar o conteúdo de um elemento do DOM. O (2) altera um text node já existente e o (1) cria um novo.

Use (2) quando você quiser alterar um text node. Use (1) quando você quiser criar novos elementos além de text node.

Sendo assim (2) é mais rápido porque não precisar parsear o texto.

A

1 - Innerhtml
2 - textcontent