2015-04-15 2 views
1

Возможно ли получить все цветовые значения, существующие в div с определенным классом, и его дочерние элементы?Получение всех цветов из div с помощью jQuery/JS

, например, у меня есть:

<div class="row client"> 
<a href="somepage.php" style="color:#515151;">Link1</a> 
<span style="color:#f3f3f3;">Span</span> 
<h3 style="color:#ff00ff;">Subtitle</h3> 
</div> 

Я хочу, чтобы массив, чтобы получить все цвета:

background of the parent div 
color of the <a> element 
color of the <span> element 
color of the <h3> element 

Кроме того, я использую highcharts для отображения диаграммы в том же дел. Можно ли использовать там и цвета?

Я не думаю, что я могу поставить это яснее для вас, ребята,

Большое спасибо!

Работа

+1

Есть только все эти цвета встроенные стили? а не в таблице стилей? .. – qtgye

+0

В высоких диаграммах цвета являются жестко закодированными значениями, поэтому я не думаю, что это нужно. –

ответ

0

Вы можете просто перебрать все элементы в div

Fiddle

var elements = $(".client").children() 

$(elements).each(function(index) { 
    console.log(index + ": " + $(this).css("color")); 
}); 
+0

Большое спасибо! Работает как очарование (: – Ixbitz

+0

это удовольствие – R4nc1d

+0

Некоторые советы по этому вопросу: в первой строке отсутствует полуколония. Будьте последовательны, используйте один или нет. Переменная 'index' не представляет собой index, это элемент, вы должны называть его соответствующим образом. '$ (elements)' не требуется, 'elements' уже является объектом jQuery. – CodingIntrigue

3

Вы можете использовать:

var colorarray=[]; 
$('.client').children().addBack().each(function(){ 
    if(!$(this).is('.client')) 
    colorarray.push("color of the <" +$(this).prop("tagName")+"> is "+ $(this).css('color')) 
    else 
    colorarray.push("background of <" +$(this).prop("tagName")+"> is "+ $(this).css('backgroundColor')) 
}) 

Working Demo

Если вы хотите, чтобы цвет в шестнадцатеричном, вы можете передать этот https://stackoverflow.com/a/1740716/1719752

+0

В соответствии с вопросом вы должны добавить фоновый цвет. Я также не уверен, если какой-либо другой цвет должен быть включен, например, пограничный цвет и т. Д. – Sirko

+0

@Sirko: done ... –

+0

Это работает, но код от Jacques кажется более простым. Спасибо за Ваш ответ! – Ixbitz

0

Вот довольно неэффективно, но, я думаю, легко понять подход без библиотек:

let allNodes = Array.from(document.querySelectorAll('*')); 

let setOfColors = allNodes.reduce((colors,el) => { 
    return colors.add(getComputedStyle(el).backgroundColor) 
}, new Set) 


let arrayOfColors = Array.from(setOfColors); 
Смежные вопросы