Para essa aula vamos começar com a estrutura HTML abaixo. Repare que vamos manipular os vários atributos do input, e poderíamos fazer isso com qualquer tipo de elemento:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Manipulando Atributos Com Javascript</title>
<script src="./index.js" defer></script>
</head>
<body>
<h1>Manipulando Atributos Com Javascript</h1>
<hr>
<input type="text" name="input" id="input" data-something-else="Algum valor">
<button id="value">Mudar Valor</button>
<button id="type">Mudar Tipo</button>
<button id="placeholder">Mudar Placeholder</button>
<button id="disable">Desabilitar/Habilitar</button>
<button id="data">Mostrar Dados</button>
</body>
</html>
Vamos começar pelo valor do input:
const input = document.getElementById('input')
document.getElementById('value').addEventListener('click', function () {
input.value = 'Olá, mundo!'
console.log(input.value)
console.log(input.getAttribute('value'))
})
Também podemos alterar o próprio tipo de input, e isso reflete imediatamente na página:
document.getElementById('type').addEventListener('click', function () {
// input.type = input.type !== 'date' ? 'date' : 'text'
input.setAttribute('type', 'radio')
})
Podemos manipular atributos comuns, como o placeholder:
document.getElementById('placeholder').addEventListener('click', function () {
input.placeholder = 'Digita algo...'
})
E também atributos booleanos, como o disabled:
document.getElementById('disable').addEventListener('click', function () {
input.setAttribute('disabled', !input.disabled)
})
Por fim, podemos usar o poder dos atributos de dados do HTML dentro do javascript para aumentar ainda mais as nossas possiblidades:
Obs.: Repare no “Inspecionar” que podemos inserir atributos dinamicamente no elemento.
document.getElementById('data').addEventListener('click', function () {
const data = input.dataset.somethingElse
console.log("O valor do atributo data-something-else é: " + data)
input.dataset.somethingElse = 'Algum outro valor'
console.log("O valor do atributo data-something-else agora é: " + input.dataset.somethingElse)
})