以下工作正常:
document.getElementById("comment").style.background=color
我想添加几个ID。以下不起作用:
document.getElementById("comment, name, url").style.background=color
document.querySelectorAll("comment, name, url").style.background=color
有人可以建议使用哪些代码来编写绑定所有ID的新函数吗?
编辑: 这是我正在处理的代码: 在标题上我有:
<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 :(得分:2)
创建并使用一个函数:
function colorElement(id, color){
document.getElementById(id).style.backgroundColor = color;
}
colorElement('comment', 'red');
colorElement('name', 'green');
colorElement('url', 'blue');
或者您可以使用元素id
的数组:
['comment', 'name', 'url'].forEach(function(a){
document.getElementById(a).style.backgroundColor = 'red';
});
或者,作为前一个开发(允许您设置不同的颜色):
[{
"id": "comment",
"color": "red"
}, {
"id": "name",
"color": "green"
}, {
"id": "url",
"color": "blue"
}].forEach(function (a) {
document.getElementById(a.id).style.backgroundColor = a.color;
});
答案 1 :(得分:2)
由于你标记了jQuery,这是一种方式:
$("#comment, #name, #url").css("background-color",color);
这会抓取多个ID,并将样式应用于它们。
答案 2 :(得分:1)
getElementById
方法只能获得一个元素,因此您需要在每个ID上使用它:
var ids = ["comment", "name", "url"];
for (i in ids) {
document.getElementById(ids[i]).style.background = color;
}
querySelectorAll
采用选择器,因此您需要在每个id前加#
前缀,然后您需要遍历结果,因为您一次只能在一个元素上设置属性:
var el = document.querySelectorAll("#comment, #name, #url");
for (i in el) {
el[i].style.background = color;
}
答案 3 :(得分:0)
另一种方法是创建一个ID数组和数组循环
var els=["comment", "name", "url"];
while (els.length){
document.getElementById(els.pop()).style.backgroundColor = color;
}
答案 4 :(得分:0)
您可以使用
等元素名称数组进行迭代for(var i=0; i<3; i++)
{
document.getElementById(array[i]).style.background=color;
}