2013-10-27 3 views
0

работает отлично следующее:Как добавить больше, чем document.getElementById?

document.getElementById("comment").style.background=color 

Я хотел бы добавить несколько идентификаторов. Ниже не работают:

document.getElementById("comment, name, url").style.background=color 
document.querySelectorAll("comment, name, url").style.background=color 

Может кто-то предложить, что код избегать, чтобы написать новую функцию, чтобы связать все идентификаторы?

EDIT: Это код, который я сейчас работаю: В заголовке у меня есть:

<script> 
function setbg(color) 
{ 
document.getElementById("comment").style.background=color 
} 
</script> 

И это стили также следующие TextArea:

<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" required="" title="Mandatory field" onfocus="this.value=''; setbg('#e5fff3');" onblur="setbg('white')" placeholder="Add a comment here..." style="background-color: white; background-position: initial initial; background-repeat: initial initial;"></textarea></p> 

Но я хотел бы его также следует использовать для:

<input type="text" name="url" id="url" value="" size="22" tabindex="3" placeholder="WWW" onfocus="this.value=''; setbg('#e5fff3');" onblur="setbg('white')"> 

Как и в других областях, как электронная почта, имя и т.д.

+0

Где вы используете jquery? $ ("# comment, #name, #url"). css ('background-color', color); должно сработать. –

+0

Посмотрите: http://stackoverflow.com/questions/7079011/jquery-multiple-id-selectors – Mindbreaker

+0

Работает JavaScript на * HTML *, а не на * PHP * (пожалуйста, покажите HTML, созданный этим PHP, 'view source' в вашем браузер). –

ответ

2

Создание и использование, функции:

function colorElement(id, color){ 
    document.getElementById(id).style.backgroundColor = color; 
} 

colorElement('comment', 'red'); 
colorElement('name', 'green'); 
colorElement('url', 'blue'); 

JS Fiddle demo.

Или вы можете использовать массив элементов id с:

['comment', 'name', 'url'].forEach(function(a){ 
    document.getElementById(a).style.backgroundColor = 'red'; 
}); 

JS Fiddle demo.

Или, как развитие предыдущего (что позволяет устанавливать различные цвета):

[{ 
    "id": "comment", 
    "color": "red" 
}, { 
    "id": "name", 
    "color": "green" 
}, { 
    "id": "url", 
    "color": "blue" 
}].forEach(function (a) { 
    document.getElementById(a.id).style.backgroundColor = a.color; 
}); 

JS Fiddle demo.

+0

Я полагаю, что вы имели в виду 'colorElement()' вместо 'color()'? –

+1

Я сделал; просто понял, что когда я писал демо. Благодаря! = D –

+0

Хм, спасибо. Но мне не нужно указывать цвет в заголовке. Я укажу его на разных формах ... например: 'onfocus = 'this.value =' '; setbg (' # e5fff3 ');".. Теперь я использую в заголовке ' ', но я хотел бы цвет, который будет установлен позже через' setbg' – Pikk

2

Поскольку вы помечен JQuery, вот так:

$("#comment, #name, #url").css("background-color",color); 

Это захватывает несколько идентификаторов, и применяет стиль к ним.

0

Другой подход заключается в создании массива идентификаторов и цикл по массиву

var els=["comment", "name", "url"]; 

while (els.length){ 
    document.getElementById(els.pop()).style.backgroundColor = color; 
} 
0

Либо вы можете перебирать с массивом имени элемента, как

for(var i=0; i<3; i++) 
{ 
    document.getElementById(array[i]).style.background=color; 
} 
1

getElementById метод может получить только один элемент, так вам необходимо будет использовать его для каждого идентификатора:

var ids = ["comment", "name", "url"]; 
for (i in ids) { 
    document.getElementById(ids[i]).style.background = color; 
} 

querySelectorAll занимает селектор, так что вам нужно будет префикс каждого идентификатора с #, то вам нужно Переберите результат, как вы можете только установить свойство на одном элементе в то время:

var el = document.querySelectorAll("#comment, #name, #url"); 
for (i in el) { 
    el[i].style.background = color; 
} 

Демо: http://jsfiddle.net/Guffa/B3J4a/

+2

'for..in' над _Array_? –

+0

@PaulS .: Он выполняет итерации ключей, а ключи в массиве - это индексы. – Guffa

+0

Я пробовал оба из них, но в моем коде не работает :( Возможно, я что-то не так. – Pikk

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