Teraz pod kolor podstawiasz tekst 'x', jedną literkę, a nie zawartość zmiennej x. Żeby użyć zawartości zmiennej x, zlikwiduj cudzysłowy wokół x.
Żeby to działało tak, jak mówisz, musisz spreparować właściwy ciąg znaków będący kolorem CSS -- i dopiero ten ciąg podstawisz do x. Bo jeśli wstawisz tam po prostu wartość zmiennej x, to gdy ktoś wpisze w pole np. 4, to pod backgroundColor podstawisz tą czwórkę. A powinieneś podstawić coś takiego: rgb(4%, 4%, 4%);.
Linia:
var x = new String();
jest zupełnie bez sensu. Nie robi tu niczego pożytecznego. Usuń ją. Zamiast tego, dodaj var na początku następnej linii.
edit: Gdy zacząłem pisać tego posta, to nie było tego powyżej...
@Ibefree:
Zauważ, że masz to nadal źle napisane. Podaj np. 100. W świetle wymagań, jakie opisałeś, powinieneś uzyskać kolor biały: 100%, 100%, 100%. Ale nie będzie biały, tylko szary. Bo nie masz w tym stringu procentów. Zamiast "rgb(100%, 100%, 100%)" tworzysz "rgb(100, 100, 100)". W tej notacji wartości składowych R, G i B mają zakres 0-255, czyli 100 to nawet nie 50%. Musisz dodać tam znaczki procentów.
Z tym jaśniej/ciemniej to zależy jak chcesz zrobić. Jak ktoś wciśnie np. na Jaśniej, to wartość w inpucie też ma się zmienić?