私は画像の平均色を取り、imgがある親クラスの背景として表示するプログラムを作成しようとしています。Javascript imgの平均色は複数の背景に表示されます
各画像は別々のクラスに格納されている:「sqr1」、「sqr2」など
問題は、最後の画像要素の平均色は、すべての親クラス・タグの背景(のように表示されていることです'sqr1'、 'sqr2'など)。
これら2つを分ける方法はありますか?
これを行う方が良いですか?
<html>
<head>
<title>getting average color</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="js/color-thief.js"></script>
</head>
<body>
<p id="bob">...</p>
<div class="sqr1">
<img src="memes/apple.jpg" width="400" height="400">
</div>
<p></p>
<div class="sqr2">
<img src="memes/pie.jpg" width="400" height="400">
</div>
<script type="text/javascript">
var x;
var allimgs = document.getElementsByTagName("img");
var imglen = 2;
let change = function(color,img){
for (var i = 0; i < imglen; i++) {
if (allimgs[i].src == img){
allimgs[i].parentElement.style.backgroundColor = 'rgb('+color[0]+','+color[1]+','+color[2]+')';
}
}
let colormix = function(){
for(x = 0; x<imglen; x++){
var colorThief = new ColorThief();
colorThief.getColorFromUrl(allimgs[x].src, change,1);
console.log();
}
}
colormix();
</script>
</body>
</html>
この回答にあなたのコードをコピーし、 "インデックス"をiとxに置き換えても効果がありません。 2つの色は別々ではなく、最後の色を表示します。 – AtomiCookiez
なぜ内側のインデックス変数を外側のiとxに置き換えますか?クロージャー内のインデックス変数は問題を解決するものです。 – MaxPRafferty
私はforループの変数に対応していると思いました。一方、これはまだ問題を解決しません。 – AtomiCookiez