2013-02-16 2 views
0

Моя функция используется, но теперь это не так. Я пытаюсь добавить оператор if, когда вход остается пустым, он возвращается к цвету фона по умолчанию.Изменение исходного фона на основе JavaScript?

var path = /^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/g; 

function col(obj) { 
    var val = obj.value; 
    if (path.test(val)) { 
     document.body.style.backgroundColor = '#' + val; 
    } 
} 

window.onload = function() { 
    document.getElementById('bgcol').onkeyup = function() { 
     col(this); 
    } 
    if (getElementById('bgcol'.value = null || ""){ 
    document.body.style.backgroundColor = '#000000'; 
} 
} 

// конец JavaScript, HTML начинаются ниже

<input id="bgcol" placeholder="enter hexadecimal color"></input> 

ответ

0

Working Fiddle

if (getElementById('bgcol').value == "") { 

и

document.getElementById('bgcol').onkeyup = function() { 
    if (this.value == ""){ 
     document.body.style.backgroundColor = '#000000'; 
    } 
    else { 
     col(this); 
    } 
} 

и

<input id="bgcol" placeholder="enter hexadecimal color" /> 
+1

Неужели никто не потрудился даже тестирования кода в их головах? –

+0

@ Kolink Да, я понял, моя ошибка заключалась в том, что '||' OR gate не использовался, как должно быть. –

+0

@ Kolink сейчас, как дела? –

-1

Попробуйте упрощенную версию кода:

window.onload = function() { 
    document.getElementById('bgcol').onkeyup = function() { 
     var col = this.value; 
     if(!col.match(/^#?(?:[0-9a-f]{3}){1,2}$/i)) col = "#000000"; 
     if(col.charAt(0) != "#") col = "#"+col; 
     document.body.style.backgroundColor = col; 
    }; 
}; 

Он использует более простые регулярные выражения, а также позволяет # быть принята и по желанию.

0

Вам нужно document.getElementById и очистить свой синтаксис:

if (document.getElementById('bgcol').value == null || document.getElementById('bgcol').value == "") 
Смежные вопросы