2015-02-27 2 views
2

Я пытаюсь установить div 'changebox' с цветом rgb, который является результатом трех рандомов. Rgbs меняются (я могу сказать по document.writes), но div просто остается белым, независимо от того, что такое rgb. Пожалуйста, помогите, чтобы коробка изменилась на правильный цвет rgb.Изменение цвета фона css с переменными javascript

<div id="changeBox" style="width: 150px; height: 150px; position: absolute; top: 10%; left: 10%; background-color: white; border: 4px solid black; color: black; font-family: 'Merriweather Sans', sans-serif;"> 

<script> 
var randR = Math.floor(Math.random() * 255) + 1; 
document.write(randR+", "); 
var randG = Math.floor(Math.random() * 255) + 1; 
document.write(randG+", "); 
var randB = Math.floor(Math.random() * 255) + 1; 
document.write(randB); 

document.getElementById('changeBox').style = "background-color: rgb(" + randR + ", " + randG + ", " + randB + ");"; 
</script> 

</div> 

ответ

1

Вы должны изменить только background-color свойство:

document.getElementById('changeBox').style.backgroundColor = "rgb(" + randR + ", " + randG + ", " + randB + ")"; 

В этом случае Вытащите хвостохранилища ;, чтобы значение в силе.

Демо:http://jsfiddle.net/zc16vmjt/

Другое дело, что document.write не очень хорошая практика. Это легко избежать в этом случае и идти с appendChild:

var box = document.getElementById('changeBox'); 
var randR = Math.floor(Math.random() * 255) + 1; 
var randG = Math.floor(Math.random() * 255) + 1; 
var randB = Math.floor(Math.random() * 255) + 1; 
box.appendChild(document.createTextNode(randR + ", " + randG + ", " + randB)); 
box.style.backgroundColor = "rgb(" + randR + ", " + randG + ", " + randB + ")"; 

Демо:http://jsfiddle.net/zc16vmjt/1/

+0

Спасибо, что отлично работал. – user2985562

0

Не назначайте непосредственно style. Назначьте style.backgroundColor.

+0

Спасибо, что помогли, но цвет по-прежнему не меняется на rgb – user2985562

0

Каждый раз, когда вы:

document.write(); 

Вы перезаписана, что в теле весь документ, полностью удалив div.

var randR = Math.floor(Math.random() * 255) + 1; 
var randG = Math.floor(Math.random() * 255) + 1; 
var randB = Math.floor(Math.random() * 255) + 1; 

document.getElementById('changeBox').style.backgroundColor = "rgb(" + randR+ "," + randG+ "," + randB + ")"; 

Попробуйте это, и все должно быть в порядке. Если вы хотите увидеть значения, выведите их в отдельный div; Просто не перезаписывайте весь документ с помощью document.write();

+0

Это не совсем правильно: * «вы переписываете то, что находится в теле всего документа, полностью удаляя div» *. 'document.write' перезаписывает все, только если документ уже закрыт, что означает, что DOM загружается и отображается. Документ документа OP загружается при выполнении document.write, поэтому он действительно добавляет контент и не перезаписывает его. Но, конечно, это плохая практика. – dfsq

0

У вас есть дополнительная точка с запятой и отсутствует закрывающая кавычка.

Чтобы отслеживать ваши вложенные кавычки, рекомендуется чередовать одиночные и двойные кавычки. Это упрощает понимание того, что после закрывающей круглой скобки должен быть знак кавычки, чтобы закрыть это, и за ним должна следовать кавычка, которая соответствует начальной цитате, перед фоновым цветом.

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