Несколько вещей:
Я не уверен, почему вы бы использовали замыкание функции для выполнения этого, но это на самом деле не проблема.
Создание функции colors
без вызоваон не установит var color
у вас внутри, что означает, что вы не можете его использовать, поэтому я добавил возвращаемое значение, чтобы получать новый цвет при каждом вызове функции.
Последнийпроблема заключалась в $ps[i].style
: поскольку вы использовали var i
, ps$[i]
, который вы используете в приемнике событий, не будет таким же, даже если он вызывается, вместо этого измените стиль цели события.
<!DOCTYPE>
<html>
<head>
<meta charset=utf-8/>
</head>
<body>
<section>
<p>Mussum Ipsum, cacilds vidis litro abertis. Cevadis im ampola pa arma uma pindureta. Per aumento de cachacis, eu reclamis. Quem manda na minha terra sou euzis! Sapien in monti palavris qui num significa nadis i pareci latim.</p>
<p>A ordem dos tratores não altera o pão duris. Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi. Praesent malesuada urna nisi, quis volutpat erat hendrerit non. Nam vulputate dapibus. Vehicula non. Ut sed ex eros. Vivamus sit amet nibh non tellus tristique interdum.</p>
<p>Leite de capivaris, leite de mula manquis sem cabeça. Em pé sem cair, deitado sem dormir, sentado sem cochilar e fazendo pose. Interessantiss quisso pudia ce receita de bolis, mais bolis eu num gostis. Não sou faixa preta cumpadi, sou preto inteiris, inteiris.</p>
</section>
<script>
'use strict'
var $ps = document.querySelectorAll('p');
for(var i = 0; i<$ps.length; i++){
$ps[i].addEventListener('click', function(e){
e.target.style.backgroundColor = color();
});
}
function color(){
var r = Math.floor((Math.random() * 256));
var g = Math.floor((Math.random() * 256));
var b = Math.floor((Math.random() * 256));
return 'rgb('+r+','+g+','+b+')';
}
</script>
</body>
</html>