2014-01-24 3 views
0

Я пытаюсь создать текстовое поле, в котором пользователь может ввести одно из ключевых слов цвета, например, синий, лайм или черный, нажмите кнопку «Отправить», а цвет фона страницы будет соответственно.
Вот что у меня есть:Установите цвет фона на основе ввода текста пользователя

<label for="color">Color: </label><input type="text" name="color" size="20" id="color" /> 
<button type="button" onClick="javascript:changeBGC(color)">Submit</button> 

, а затем в моем сценарии

function changeBGC(color){ 
    document.bgColor = color; 
} 

ответ

6

Попробуйте это:

document.body.style.backgroundColor = document.getElementById('color').value; 

document.getElementById('color') является входным элементом, .value получает это значение.

Here's some more documentation о том, как установить стили css с помощью JavaScript.

Fiddle example

+0

... или если вы иметь другие backgro und properties, которые вы хотите сохранить неповрежденными (например, фоновое изображение), сделайте это 'document.body.style.backgroundColor = color'. –

+0

@ScottSauyet: хорошая идея. Редактирование. – Cerbrus

0

Или вы можете изменить разметку следующим образом:

<button type="button" onClick="javascript:changeBGC(color.value)">Submit</button> 
                 ^

Fiddle demo

0

Или вы можете использовать лучший подход

<label for="color">Color:</label> 
<input type="text" name="color" size="20" id="color" value=""/> 
<button type="button">Submit</button> 

var input = document.getElementById('color'); 
var button = document.querySelector('button'); 
button.addEventListener('click', function(event) { 
    event.preventDefault();  
    var color = input.value; 
    document.body.style.background = color; 
}); 
+0

'querySelector'? Зачем? И почему бы вам объявить, что многие временные переменные, такие как 'var color'? – Cerbrus

+0

Почему бы не использовать 'querySelector'? Мне легче читать временные переменные. Что-то вроде этого: ** [jsfiddle] (http://jsfiddle.net/P8heY/) ** Я ошибаюсь или это плохой способ кодирования? –

+0

'querySelector' _very_ неэффективен. вместо этого используйте 'document.getElementsByTagName()'. Представление многих временных переменных, таких как, просто требует конфликтов в крупных проектах. Я согласен, что читать легче, но, на мой взгляд, это плохая привычка. (Если вы не используете temp var много в этой функции, тогда код можно сократить, используя его) – Cerbrus

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