Just use a if
or ternary operation and use the property element.style.backgroundColor
.
Example:
/**
* Captura os elementos
*/
const content = document.querySelector("#content")
const count = document.querySelector("#count")
/**
* Utiliza o evento "input" para detectar novas alterações no textarea
*/
content.addEventListener("input", () => {
/**
* Captura o valor do atributo "maxlength" e
* calcula a quantidade restantes de caracteres
*/
let maxLength = parseInt(content.getAttribute('maxlength'))
let charRemaining = maxLength - content.value.length
/* Converte o valor para pt-BR (Adiciona o "." em caso de milhar) */
count.textContent = charRemaining.toLocaleString()
/**
* Utiliza uma operação ternária para verificar a quantidade de caracteres restantes
* Se a qnt. restante for maior que 2190 => Verde, caso contrário realiza outra opção ternária
* Se a qnt. restante for maior que 2180 e menor que 2190 => Laranja, caso contrário utiliza o vermelho
*/
count.style.color = charRemaining > 2190 ? 'green' : charRemaining > 2180 ? 'orange' : 'red'
content.style.backgroundColor = charRemaining > 2190 ? '#00800026' : charRemaining > 2180 ? '#ffa50026' : '#ff000026'
})
content.dispatchEvent(new Event("input"))
<div>
<textarea id="content" rows="10" maxlength="2200"></textarea>
<p class="texto-cont">Restam <span id="count"></span> caracteres</p>
</div>
If you use any plugin for WYSIWYG or similar, it is necessary that this allows you to "listen" to some events such as keydown
, keyup
, input
etc. This will not always happen. In the example below, I will use the project emojionearea, but may not work with others.
Example commenting:
const maxLength = 2200
const emojionearea = $("#emojionearea1").emojioneArea({
events: {
/**
* Informa a função callback do evento `keyup`
* Caso queira utilizar outro evento, basta dá
* uma olhada na documentação:
* https://github.com/mervick/emojionearea#events
*/
keyup: (editor) => { charRemaining(editor[0]) }
}
})
function charRemaining(editor) {
/**
* Captura o valor do atributo "maxlength" e
* calcula a quantidade restantes de caracteres
*/
let charRemaining = maxLength - editor.textContent.length
/* Converte o valor para pt-BR (Adiciona o "." em caso de milhar) */
count.textContent = charRemaining.toLocaleString()
/**
* Utiliza uma operação ternária para verificar a quantidade de caracteres restantes
* Se a qnt. restante for maior que 2190 => Verde, caso contrário realiza outra opção ternária
* Se a qnt. restante for maior que 2180 e menor que 2190 => Laranja, caso contrário utiliza o vermelho
*/
count.style.color = charRemaining > 2190 ? 'green' : charRemaining > 2180 ? 'orange' : 'red'
count.style.backgroundColor = charRemaining > 2190 ? '#00800026' : charRemaining > 2180 ? '#ffa50026' : '#ff000026'
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/emojionearea/3.4.1/emojionearea.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/emojionearea/3.4.1/emojionearea.min.css" rel="stylesheet"/>
<div class="row">
<div class="span6">
<textarea id="emojionearea1"></textarea>
</div>
<p class="texto-cont">Restam <span id="count">2.200</span> caracteres</p>
</div>
Have you tried
document.getElementById("cont").style.backgroundColor = "red"
?– user129295
How could I apply in this case?
– Rodrigo