Front end 3 Flashcards
(31 cards)
O (?) é uma interface de linguagem neutra que permite que o documento HTML seja atualizado dinamicamente.
DOM
DOM significa (?). Isso porque nosso HTML é um documento o navegador para ler ele transforma em objeto, manipulável na estrutura do JavaScript.
Document Object Model
Porque podemos digitar:
document.title > ‘Robotron 2000’
E não:
document.producao?
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!
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.
Selecionar
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.
Alterar/modificar
(?) 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.
Adicionando e excluindo
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>
document.getElementById(“texto”).innerTEXT = “O inverno passou”
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?
Usando script
Colocamos na última linha possível, para evitar que impeça o carregamento da página (após o main)
Como selecionamos o ID robotron utilizando o querySelector (selecionando pelo ID)?
section class=”robotron”
document.querySelector("#robotron")
Explique o código abaixo ponto a ponto:
const robotron = document.querySelector(“#robotron”)
robotron.addEventListener(“click”, dizOi)
function dizOi() {
console.log(“oi”);
}
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
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);
Sim
Hoisting (içamento)
As (?) são basicamente armazenadoras de códigos. Elas permitem que os códigos sejam “chamados” mais de uma vez.
Funções
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)”);
}
Anônima
Arrow
Nominada(denominada)
What’s the difference between:
1 - const controle = document.querySelectorAll(".controle-ajuste"); 2 - const controle = document.querySelector(".controle-ajuste");
The querySelectorAll will choose all of the “.controle-ajuste” classes. The another one just catch the first element (with that class).
Explain this code:
const controle = document.querySelectorAll(".controle-ajuste"); controle.forEach((elemento) => { elemento.addEventListener("click", () => { console.log("funcionou"); }) })
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”
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); }) })
Buscamos saber o que aconteceu com o clique. O evento vai trazer no console (F12) diversas informações.
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> (...)
Ao clicar, quero que exiba o conteúdo textual (que é “+” ou “-“) do target (buttom). Ao clicarmos o console (F12) vai disparar o output + ou -
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; } }
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.
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]"); }
function mudaCores(elementos){ var cores = elementos.getAttribute("[data-cor]"); var tipoElemento = elementos.getAttribute("[data-tipo]"); }
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]"); }
Sim, está usando data attribute personalizado. O prefixo data- não é obrigatório.
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}, ]
1 - console.log(livros[1].autor)
2 - livros[1].genero = “Ficção”
3 - livros[1].estoque = 10
4 - delete livros[1].editora
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())
O autor do livro se chama Flávio Almeida
O que a tag “controls” permite?
<audio></audio>
Permite tocar, alterar volume, avançar e recuar áudio (player de áudio)
Como se chama esse recurso com cifrão?
Aqui está um nome comum: ${nome}
Template string