2015-08-08 87 views
1

有没有像CSS任何方式,我们可以用JavaScript改变颜色的标签,我试过的getElementsByTagName但没有任何反应。的getElementsByTagName是不会改变颜色

我试图寻找谷歌,但遗憾的是没有找到,这就是为什么我问这个基本的JavaScript问题在这里,感谢提前你的答案......

此代码是不工作...

HTML :

<p id="demo"> test test test test test</p> 

<span id="demoz"> test2 test2 test2 test2 test2</span> 

的Javascript:

document.getElementById('demo').style.background = "green"; 

document.getElementsByTagName('span').style.background = "green"; 

的jsfiddle:

http://jsfiddle.net/3j0vokLd/

+0

这是因为它会返回元件一样的阵列'getElementsByClassName方法()''尝试document.getElementsByTagName( '跨度')[0] = .style.background “绿色”;' – NewToJS

回答

4

这是因为​​将产生类似阵列的对象。

要改变这个函数返回每个(跨度)元素的背景颜色,你会遍历返回数组过(类似的对象):

var spanElements = document.getElementsByTagName('span'); 

for (var i = 0; i < spanElements.length; i++) { 
    spanElements[i].style.background = 'green'; 
} 

See the updated JSFiddle

或者,如果你是只是针对单个span元素,返回数组中的第一个,你可以这样做:

document.getElementsByTagName('span')[0].style.background = 'green'; 
+1

大概应该是'.backgroundColor',不只是'.background' – Pointy

+0

感谢您的帮助 –

2

它返回一个NodeList:(?好,你可以在一个页面上的多个span标签,右)

document.getElementsByTagName('span')[0].style.background = "green"; 
+4

我相信索引应该是0.数组中的第一个也是唯一的元素。 – csbarnes

+0

好点,固定:) – beautifulcoder

+1

当然,如果没有在页面上的任何跨度,那么当您试图访问数组的索引,这将崩溃。 – Spudley

1

是 - 检查出来:

http://jsfiddle.net/gratiafide/gj0g5ysr/

var x = document.getElementsByTagName("SPAN"); 
var i; 
for (i = 0; i < x.length; i++) { 
    x[i].style.backgroundColor = "red"; 
} 

的getElementsByTagName返回一个集合,这是像阵列

+0

它不是像数组...它实际上数组 – Tushar

+0

也许吧,但他们只在这里称之为集合,这有时意味着有可能区别:http:// www。w3schools.com/jsref/met_document_getelementsbytagname.asp – user3089840

+4

@ user3089840 @TusharGupta:请勿使用[w3schools](http://www.w3fools.com/),请使用[MDN](https://developer.mozilla.org/ EN-US /)。您会注意到['getElementsByTagName'](https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName)会返回['HTMLCollection'](https://developer.mozilla)。 org/en-US/docs/Web/API/HTMLCollection),它不是['Array'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array ),而是一个类似数组的对象。 – Oka

1

尝试利用document.querySelector()具有选择"span[id=demoz"])指定具有属性span元件id="demoz"设置background

document.getElementById("demo").style.background = "green"; 
 

 
document.querySelector("span[id=demoz]").style.background = "green";
<p id="demo"> test test test test test</p> 
 

 
<span id="demoz"> test2 test2 test2 test2 test2</span>

的jsfiddle http://jsfiddle.net/3j0vokLd/3/

+0

不错。非常简洁。 – user3089840

+0

感谢您的帮助 –