2015-03-30 4 views
0

Я хочу изменить цвет div после проверки, является ли он красным или зеленым.Изменение цвета динамически

Я пробовал это, но не работает.

if ($(this).css("background-color")=="rgb(34,187,69)"|| $(this).css("background-color")=="rgb(255,0,51)") { 
    var s = confirm("Are you sure you want to pushback?"); 
    if (s == true) { 
    $(this).css("background-color","#ffffff"); 
    } 

Это правильно?

+2

Значение, возвращаемое цветом фона, зависит от браузера ... так что лучшим решением является проверка для какого-либо класса, если это возможно. –

+0

Я устанавливаю конкретный цвет для div до и упомянули значения rgb этого цвета –

+0

там также кажется, что-то не так с вашим кодом. вы сохраняете результат 'confirm' в' var s', но после этого вы проверяете переменную с именем 'r' –

ответ

0

Браузер возвращает значение как rgb (34, 187, 69). но вы сравниваете его как rgb (34,187,69). Вот почему он не выполняет внутренние утверждения.

Надеюсь, что он решает вашу проблему.

+0

Спасибо ... это отлично работает. –

+0

большой ....... :-) – GouravR

4

Цвет отличается от браузера. Поэтому используйте класс в css и проверьте с помощью jquery с помощью hasClass().

.green{ 
    background-color: green; 
} 

.red{ 
    background-color: red; 
} 

if ($(this).hasClass("green") || $(this).hasClass("red")) { 
    var s = confirm("Are you sure you want to pushback?"); 
    if (s == true) { 
    $(this).css("background-color","#ffffff"); 
    } 
+0

Спасибо ...... :-) –

+0

Всегда приветствую друга –

0

Другой пример:

$(document).ready(function(){ 
 
    $('#wrap').click(function(){ 
 
    var color_ = $(this).css("background-color"); 
 
    var colorr = rgb2hex(color_); 
 
    if (colorr=='#ff0000') { 
 
    var s = confirm("Are you sure you want to pushback?"); 
 
    if (s == true) { 
 
    $(this).css("background-color","#ffffff"); 
 
     } 
 
    } 
 
    }); 
 
}); 
 
    
 
    var hexDigits = new Array 
 
     ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); 
 

 
//Function to convert hex format to a rgb color 
 
function rgb2hex(rgb) { 
 
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 
 
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); 
 
} 
 

 
function hex(x) { 
 
    return isNaN(x) ? "00" : hexDigits[(x - x % 16)/16] + hexDigits[x % 16]; 
 
}
#wrap{ 
 
    background:red; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrap">Click Me</div>

0

Попробуйте:

function changeColor(obj) { 
    if ($(obj).css("background-color") == "rgb(34, 187, 69)" || $(obj).css("background-color") == "rgb(255, 0, 51)") { 
     var s = confirm("Are you sure you want to pushback?"); 
     if (s == true) { 
      $(obj).css("background-color", "#ffffff"); 
     } 
    } 
} 

на HTML:

<input type="button" id="But_Change" value="changeColor" style="background-color: rgb(34,187,69)" onclick="changeColor(this)" /> 
0

Каждый браузер возвращает разные значения для цветов. Но все-таки дать этому попытку:

function componentToHex(c) { 
var hex = c.toString(16); 
return hex.length == 1 ? "0" + hex : hex; 
} 

function rgbToHex(r, g, b) { 
return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); 
} 

alert(rgbToHex(0, 51, 255)); 

попытаться сравнить после этого.

Смежные вопросы