2016-04-04 27 views
0

Rastgele arkaplan css rengi yapmak ve metin rengini tersine çevirmek için umut vaat eden bir kod buldum, ancak bunu işe yaramayacak gibi görünüyor. Herhangi bir yardım büyük beğeni topluyor. BuradaArka plan rengini değiştirme metin jQuery

$(document).ready(function() { 
var colors = ['#000000', '#FF3516', '#34FF17', '#2458FF']; 
function UpdateColors() { 
    $(this).each(function(index) { 
     var color = colors[Math.floor(Math.random() * colors.length)]; 
     var invertedColor = invertColor(color); 
     $(this).css({ 
      'background-color': color, 
      'color': invertedColor 
     }); 
    }); 
} 
//$('div').UpdateColors(); 
}); 

Fiddle:

https://jsfiddle.net/abennington/h49zh3gy/10/

+3

yöntem invertcolor nerede –

+0

Bu [demo] (https://jsfiddle.net/h49zh3gy/12/) yöntemi bir öğeyle çağırmak için bir olasılık olabilir, ancak invertColor işlevi tanımlanmamıştır. – empiric

+0

Aşağıda bir cevap verdim, ancak tanımlı bir invertColor işlevi yok. InvertColor koduna sahip değilseniz bana bildirin ve bu işlevi keman'a ekleyeceğim. – carlcheel

cevap

2

jQuery öğesini genişletmiyordunuz, böylece $ ('div') .ChicColors() işlevini göremediniz.

Ben bu yüzden fonksiyonunu bu şekilde kullanabileceği küçük değişiklikler yaptık: invertColor fonksiyonu yerde tanımlanmamış olarak yine bir hata alırsınız Ancak

jQuery.fn.UpdateColors = function() { ... } bu keman https://jsfiddle.net/h49zh3gy/11/

bakınız.

+0

'jQuery.fn.' ile ilgili küçük bir açıklama yardımcı olacaktır ... – empiric

2

Belirli bir eleman üzerinde css() yöntemini çağırarak veya elemanların set olmak gerekir; $(this), kullandığınız bağlamda çalışmaz. Yani

, her element için bunu yapmak için çalışıyoruz gibi görünüyor beri:

$(document).ready(function() { 
    var colors = ['#000000', '#FF3516', '#34FF17', '#2458FF']; 
    $("*").each(function() { 
     var color = colors[Math.floor(Math.random() * colors.length)]; 
     var invertedColor = invertColor(color); 
     $(this).css({ 'background-color': color, 'color': invertedColor }); 
    }); 
}); 

sadece vücut elemanı bunu yapmak istiyorsanız, "body" ile "*" değiştirin.

(Ben senin invertColor() işlevi çalıştığını tahmin ediyorum.)

Edit: Ben açınızı biraz cevapsız düşünüyorum. $'u genişletdikten sonra, altta yaptığınız görüşmedeki görüşmede yaptığınız gibi işlevinizi çağırabilirsiniz. Ancak, benim kodumu (benim görüşüme göre, biraz daha fiddly) $ ile vidalama gitmek istemiyorsanız, hala çalışır.

İlgili konular